如何根据第一个等号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 =”得到什么结果? –