如何根据第一个等号"="
拆分字符串?
所以
test1=test1
应转换为test1, test1
(作为数组)
"test1=test1".split("=")
在此示例中正常工作。
但是CSV字符串呢
test1=test1=
答案 0 :(得分:5)
您可以使用split
"test1=test1=test1=".split("=", 0); // ["test1","test1","test1"]
的第二个参数
如果您希望尽可能多地进行拆分,请使用:
"test1=test1=test1=".split("=", 2); // ["test1","test1=test1="]
如果您希望拆分仅发生一次,请使用:
{{1}}
答案 1 :(得分:1)
您可以使用indexOf()方法在字符串中找到第一个“=”的索引,然后使用索引来拆分字符串。
或者您可以使用
string.split("=", 2);
此处的数字2表示该模式最多使用2-1 = 1次,因此生成长度为2的数组。
答案 2 :(得分:1)
对于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("=(?!.*=)")
,但请不要。
答案 3 :(得分: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]