2014-02-21 46 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] 
相关问题