仅在第一个实例上拆分字符串-Java


145

我想用'='字符分割字符串。但是我只想在一开始就拆分它。我怎样才能做到这一点 ?这是'_'char的JavaScript示例,但对我来说不起作用, 仅在指定字符的第一个实例上才拆分字符串

范例:

apple=fruit table price=5

当我尝试String.split('='); 它给

[apple],[fruit table price],[5]

但是我需要

[apple],[fruit table price=5]

谢谢


你不需要逃脱=
罗希特·贾因

Answers:


282
string.split("=", 2);

String.split(java.lang.String regex, int limit)解释:

此方法返回的数组包含此字符串的每个子字符串,该子字符串由与给定表达式匹配的另一个子字符串终止或由字符串的结尾终止。数组中的子字符串按照它们在此字符串中出现的顺序排列。如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即此字符串。

limit参数控制应用图案的次数,因此会影响所得数组的长度。如果限制n大于零,则将最多应用n -1次该模式,该数组的长度将不大于n,并且该数组的最后一个条目将包含除最后一个匹配的定界符之外的所有输入。

boo:and:foo例如,字符串使用这些参数将产生以下结果:

Regex Limit    Result
:     2        { "boo", "and:foo" }
:     5        { "boo", "and", "foo" }
:    -2        { "boo", "and", "foo" }
o     5        { "b", "", ":and:f", "", "" }
o    -2        { "b", "", ":and:f", "", "" }
o     0        { "b", "", ":and:f" }

1
理解起来很混乱,但它确实有效!谢谢!
克林特·伊斯特伍德

4
一些澄清:限制2将返回AT MOST 2元素的列表。如果与表达式不匹配,则它可能返回1个元素的列表。如果该表达式有2个匹配项,则不会拆分返回数组的第二个元素。
modle13 '18


5

正如许多其他答案建议的极限方法一样,这可能是另一种方法

您可以在String上使用indexOf方法,该方法将返回给定字符的第一个出现次数,使用该索引您可以获得所需的输出

String target = "apple=fruit table price=5" ;
int x= target.indexOf("=");
System.out.println(target.substring(x+1));

2
这不会拆分,但会提取第二部分。参加第一部分将需要另外一行代码... 4行vs.1 =不赞成
Clint Eastwood

0

尝试此代码...

它的工作。

public class Split
{
    public static void main(String...args)
    {
        String a = "%abcdef&Ghijk%xyz";
        String b[] = a.split("%", 2);

        System.out.println("Value = "+b[1]);
    }
}

0
String string = "This is test string on web";
String splitData[] = string.split("\\s", 2);

Result ::
splitData[0] =>  This
splitData[1] =>  is test string  


String string = "This is test string on web";
String splitData[] = string.split("\\s", 3);

Result ::
splitData[0] =>  This
splitData[1] =>  is
splitData[1] =>  test string on web

默认情况下,split方法根据给定的正则表达式创建n个数组。但是,如果要限制拆分后要创建的数组数,则可以将第二个参数作为整数参数传递。


3
怎么了 包括更多详细信息,使您的答案易于说明!
Paresh Mayani 2015年

-2
String[] func(String apple){
String[] tmp = new String[2];
for(int i=0;i<apple.length;i++){
   if(apple.charAt(i)=='='){
      tmp[0]=apple.substring(0,i);
      tmp[1]=apple.substring(i+1,apple.length);
      break;
   }
}
return tmp;
}
//returns string_ARRAY_!

我喜欢写自己的方法:)


3
此方法不太有用,因为分隔符是硬编码的。此外,使用for循环进行线性搜索不会比使用String.indexOf查找第一个分隔符的位置带来任何优势。第三,查看返回多少String元素并不直观。当我们谈论将事物分成两部分时,请考虑使用Pair <String,String>数据类型来表示两个字符串,而不是创建一个数组。
Gee Bee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.