Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何基于第一次出现拆分字符串?_Java_Regex - Fatal编程技术网

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]