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

dra*_*ula 124 java string split

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

示例:

apple=fruit table price=5
Run Code Online (Sandbox Code Playgroud)

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

[apple],[fruit table price],[5]
Run Code Online (Sandbox Code Playgroud)

但是我需要

[apple],[fruit table price=5]
Run Code Online (Sandbox Code Playgroud)

谢谢

Zah*_*med 244

string.split("=", 2);
Run Code Online (Sandbox Code Playgroud)

作为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" }
Run Code Online (Sandbox Code Playgroud)

  • 一些澄清:限制2将返回AT MOST 2元素的列表.如果表达式不匹配,它可能返回1个元素的列表.如果表达式有2个匹配项,则不会拆分返回数组的第二个元素. (3认同)
  • 理解起来很混乱,但它确实有效!谢谢! (2认同)

cod*_*Man 10

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

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

stSplit.split("=", 2);
Run Code Online (Sandbox Code Playgroud)

这是一个java doc引用:String#split(java.lang.String,int)


Siv*_*iva 5

正如许多其他答案提出的限制方法,这可能是另一种方式

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

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

  • 这不会拆分而是提取第二部分。第一部分需要另一行代码...... 4 行 vs. 1 = 不赞成 (2认同)