186

我想用'='字符分割一个字符串。但我希望它只在第一个实例上拆分。我怎样才能做到这一点 ?这是 '_' char 的 JavaScript 示例,但它不适用于我 仅在指定字符的第一个实例上拆分字符串

例子 :

apple=fruit table price=5

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

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

但是我需要

[apple],[fruit table price=5]

谢谢

4

6 回答 6

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

正如String.split(java.lang.String regex, int limit)解释的那样:

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

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

boo:and:foo例如,string使用这些参数产生以下结果:

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" }
于 2013-08-27T10:25:39.177 回答
14

是的,你可以,只需将整数参数传递给 split 方法

String stSplit = "apple=fruit table price=5"

stSplit.split("=", 2);

这是一个 java 文档参考:String#split(java.lang.String, int)

于 2013-08-27T10:25:41.577 回答
7

正如许多其他答案所暗示的极限方法,这可能是另一种方式

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

String target = "apple=fruit table price=5" ;
int x= target.indexOf("=");
System.out.println(target.substring(x+1));
于 2013-08-27T10:26:14.697 回答
2
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

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

于 2015-11-18T09:02:36.307 回答
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]);
    }
}
于 2017-06-20T09:27:39.413 回答
-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_!

我喜欢编写自己的方法:)

于 2013-08-27T10:28:42.070 回答