Java 如何基于第一次出现拆分字符串?
如何根据第一个等号“=””拆分字符串 所以Java 如何基于第一次出现拆分字符串?,java,regex,Java,Regex,如何根据第一个等号“=””拆分字符串 所以 test1=test1 应转换为test1,test1(作为数组) “test1=test1”。在本例中,拆分(=”可以正常工作 但是CSV字符串呢 test1=test1= 您可以使用第二个参数split,如中所示 如果希望拆分次数尽可能多,请使用: "test1=test1=test1=".split("=", 0); // ["test1","test1","test1"] 如果希望拆分只发生一次,请使用: "test1=test1=t
test1=test1
应转换为test1,test1
(作为数组)
“test1=test1”。在本例中,拆分(=”
可以正常工作
但是CSV字符串呢
test1=test1=
您可以使用第二个参数
split
,如中所示
如果希望拆分次数尽可能多,请使用:
"test1=test1=test1=".split("=", 0); // ["test1","test1","test1"]
如果希望拆分只发生一次,请使用:
"test1=test1=test1=".split("=", 2); // ["test1","test1=test1="]
您可以使用indexOf()方法找到字符串中第一个“=”的索引,然后使用该索引拆分字符串 或者你可以使用
string.split("=", 2);
这里的数字2表示模式最多使用2-1=1次,从而生成长度为2的数组。这对于
匹配器来说是比字符串.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));
}
如果在第一个等号前抓住所有可能的东西,那么在那之后的所有东西
如果您坚持使用split,s.split(=(?!*=)”
,但请不要这样做。请尝试查看,因为还有另一种方法包含两个参数:regex和limit(限制数组大小)。因此,您可以将int
限制应用为仅2
——其中数组只能容纳两个元素
String s = "test1=test2=test3";
System.out.println(Arrays.toString(s.split("=", 2))); // [test1, test2=test3]
或
或
@netinept java Language您希望从“test1=test1=“”得到什么结果?不起作用。int
参数是限制。尝试“test1=test1=test1”
@mikeyaworski您显然没有阅读我链接到的文档,文档中说:“如果n为零,那么模式将被应用尽可能多次”,当然您会更改任何输入字符串以匹配用例。是的,我显然读了。因此,我会用正确的答案来回答。
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]