如何根據第一個等號012xx分割一個字符串?如何根據第一次出現分割字符串?
所以
test1=test1
應轉變爲test1, test1
(作爲數組)
"test1=test1".split("=")
正常工作在這個例子中。
但對於CSV字符串
test1=test1=
如何根據第一個等號012xx分割一個字符串?如何根據第一次出現分割字符串?
所以
test1=test1
應轉變爲test1, test1
(作爲數組)
"test1=test1".split("=")
正常工作在這個例子中。
但對於CSV字符串
test1=test1=
如果你想分裂發生多次越好,使用您可以使用split
第二個參數作爲Java doc
看出:
"test1=test1=test1=".split("=", 0); // ["test1","test1","test1"]
如果你想分裂只發生一次,使用方法:
"test1=test1=test1=".split("=", 2); // ["test1","test1=test1="]
不起作用。 'int'參數是*限制*。嘗試'「測試1 =測試1 =測試1」 .split(「=」,0);' –
@mikeyaworski你顯然沒有看過我掛的文件,它說:「如果n爲零,則該模式會被應用中儘可能多地」 而*當然*你會改變任何輸入字符串是用例相匹配。 –
是的,我顯然做過。因此,我會以正確的答案回答。 –
您可以使用indexOf()方法在字符串中找到第一個「=」的索引,然後使用該索引拆分字符串。
或者可以使用
string.split("=", 2);
這裏的數字2表示的圖案將至多2-1 = 1時使用,因此產生具有長度爲2
陣列這是一種更好的工作爲Matcher
比String.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("=(?!.*=)")
,但請不要。
嘗試在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]
哪種語言? –
@netinept java language –
你想從「test1 = test1 =」得到什麼結果? –