如何基于第一个等号"="
拆分一个字符串?
因此,
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
参数是限制。尝试使用"test1=test1=test1".split("=", 0);
。 - Michael Yaworski建议查看官方文档,因为还有另一个.split(String regex, int limit)
方法,可以传入两个参数:正则表达式和限制数组大小的limit。所以您可以将int
limit应用于仅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]
string.split("=", 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("=(?!.*=)")
,但请不要这么做。