2014-02-21 82 views
4

如何根據第一個等號012xx分割一個字符串?如何根據第一次出現分割字符串?

所以

test1=test1

應轉變爲test1, test1(作爲數組)

"test1=test1".split("=")正常工作在這個例子中。

但對於CSV字符串

test1=test1= 
+0

哪種語言? –

+0

@netinept java language –

+0

你想從「test1 = test1 =」得到什麼結果? –

回答

3

如果你想分裂發生多次越好,使用您可以使用split第二個參數作爲Java doc

看出:

"test1=test1=test1=".split("=", 0); // ["test1","test1","test1"] 

如果你想分裂只發生一次,使用方法:

"test1=test1=test1=".split("=", 2); // ["test1","test1=test1="] 
+0

不起作用。 'int'參數是*限制*。嘗試'「測試1 =測試1 =測試1」 .split(「=」,0);' –

+0

@mikeyaworski你顯然沒有看過我掛的文件,它說:「如果n爲零,則該模式會被應用中儘可能多地」 而*當然*你會改變任何輸入字符串是用例相匹配。 –

+0

是的,我顯然做過。因此,我會以正確的答案回答。 –

1

您可以使用indexOf()方法在字符串中找到第一個「=」的索引,然後使用該索引拆分字符串。

或者可以使用

string.split("=", 2); 

這裏的數字2表示的圖案將至多2-1 = 1時使用,因此產生具有長度爲2

1

陣列這是一種更好的工作爲MatcherString.split()。嘗試

Pattern p = Pattern.compile("([^=]*)=(.*)"); 
Matcher m = p.matcher("x=y=z"); 
if (m.matches()) { 
    System.out.println(m.group(1)); 
    System.out.println(m.group(2)); 
} 

如果抓住所有它可以達到第一個等號,那麼之後的一切。

如果堅持上分裂,s.split("=(?!.*=)"),但不要。

1

嘗試在Docs尋找因爲還有另一種方法.split(String regex, int limit)取入兩個參數:正則表達式和限制(陣列的限制大小)。所以你可以應用int限制只有2 - 其中數組只能容納兩個元素。

String s = "test1=test2=test3"; 

System.out.println(Arrays.toString(s.split("=", 2))); // [test1, test2=test3] 

或者

String s = "test1=test2="; 

System.out.println(Arrays.toString(s.split("=", 2))); // [test1, test2=] 

或者

String s = "test1=test2"; 

System.out.println(Arrays.toString(s.split("=", 2))); // [test1, test2] 
相關問題