拆分字符串并保持空值

Ly *_* II 0 java string split

我希望拆分一个字符串,但也保持空值.例如,我有一个这样的字符串:

String x = "x,y";
String result[] = y.split(",");
// then i will get result like this:
//result[] = ["x","y"]
Run Code Online (Sandbox Code Playgroud)

但如果我有这样的字符串:

String y = "x,";
String result[]=y.split(",");
//i will get something thing like this:
//result[] = ["x"]
Run Code Online (Sandbox Code Playgroud)

我想保持空值.我可以得到这样的结果:result[]=["x",""]使用split方法吗?

ajb*_*ajb 6

答案是在两个参数javadoc中: split

limit参数控制模式的应用次数,因此会影响结果数组的长度.如果限制n大于零,那么模式将最多应用n - 1次,数组的长度将不大于n,并且数组的最后一个条目将包含超出最后匹配分隔符的所有输入.如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度.如果n为零,那么模式将被应用尽可能多的次数,数组可以具有任何长度,并且将丢弃尾随的空字符串.

单参数的javadocsplit说:

此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样.因此,结尾的空字符串不包含在结果数组中.

2-argument javadoc的最后两个句子暗示负值limit具有与零值相同的行为(与one-argument相同的行为split),除了尾随空字符串.因此,如果您想保留尾随的空字符串,则限制的任何负值都将起作用.从而:

String result[] = y.split(",", -1);
Run Code Online (Sandbox Code Playgroud)