簡體   English   中英

使用String.split拆分多個條件

[英]Using String.split to split with multiple conditions

所以我有以下字符串:

deptid = 33 AND location ='NewYork'

基本上,我試圖將其解析為令牌。 我一直在使用Split.string並用空格分隔,這將滿足我需要的一切,但是在某些情況下字符串可能是:

deptid = 33 AND location ='New York'

我需要將所有內容保持在引號之間。 有沒有一種方法可以使用String.split對其進行拆分,以便將所有內容按空間拆分,除非遇到引號時會給我引號之間的所有內容的令牌?

編輯:對不起,您不能早點澄清! 但是我想要那句話中的每一件事。 我要Deptid,=,33,AND,位置,=紐約。 AND語句將不會一直存在。 可能只是

位置=“紐約”

你的評論:

我正在嘗試將其存儲到String []令牌中。 因此,我希望令牌[0]為33,令牌[1]為“紐約”。

試試這個

    String s = "deptid = 33 AND location = 'New York'";

    int index = 0;

    String[] arr = s.split("AND");
    String[] tokens = new String[arr.length];

    for (String str : arr) {
        tokens[index++] = str.split("=")[1].trim();
    }

    for (String token : tokens) {
        System.out.println(token);
    }

輸出:

33
'New York'

您需要的不僅僅是String.split功能更強大,還可以使用Patterns:

String myString = "deptid = 33 AND location = 'New York'";
List<String> tokens = new LinkedList<>();

Pattern tokenPattern = Pattern.compile("'[^']*'|[^ ]+");
Matcher matcher = tokenPattern.matcher(myString);
while(matcher.find()) {
    tokens.add(matcher.group());
}

System.out.println(tokens);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM