Java中String.split()丢失最后元素问题咨询及期望结果确认
Java String.split() 保留末尾空元素的解决办法
你的理解完全正确,当原字符串以分隔符结尾时,默认的split调用会丢掉末尾的空元素,你想要的包含末尾空串的结果是合理的。
问题根源
Java 里String.split(String regex)默认等价于split(regex, 0),第二个参数limit设为0时,会自动丢弃分割结果末尾的所有空字符串。要是想保留这些空元素,把limit改成负数就行(通常用-1),这时候所有分割出来的元素都会被保留,包括末尾的空串。
修改后的代码
import java.util.Arrays; import java.util.Objects; import java.util.List; public static List<String> splitString(String source, String delimiter) { if (Objects.equals(delimiter, "[")) { // "["是正则元字符需要转义,同时设置limit为-1保留末尾空元素 return Arrays.asList(source.split("\\[", -1)); } // 普通分隔符同样添加-1参数 String[] sArr = source.split(delimiter, -1); return Arrays.asList(sArr); }
验证示例
比如输入字符串是"[xtrue["(以分隔符"["结尾),调用splitString("[xtrue[", "[")会得到["", "xtrue", ""];如果你的目标结果是["[", "xtrue", ""],只需对应调整原字符串和分隔符即可,核心逻辑都是通过split(delimiter, -1)保留末尾空元素。
内容的提问来源于stack exchange,提问作者Shamil Sungatullin
相关产品推荐
相关产品推荐

