修复 Java 字符串拆分中的空值删除
在 Java 字符串上使用 split() 方法时,您可能会遇到意外结果其中空值将从结果数组中删除。这可以在以下示例中看到:
String data = "5|6|7||8|9||"; String[] split = data.split("\|"); System.out.println(split.length);
在这种情况下,您期望获得一个包含 8 个值的数组:[5, 6, 7, EMPTY, 8, 9, EMPTY, EMPTY] 。但是,仅返回 6 个值。
此行为的原因是 split() 方法默认从结果数组中删除尾随的空字符串。要禁用此行为并包含空值,您可以使用 split() 的重载版本:
String[] split = data.split("\|", -1);
通过将 limit 参数设置为负值(在本例中为 -1),您可以指示该方法尽可能多次应用模式并包含任何尾随空字符串。
这是可能的,因为 split(regex) 内部调用 split(regex, 0),这会删除尾随空字符串字符串。通过提供负限制,您可以有效地禁用此行为并强制该方法保留所有值,包括空值。
异常:
需要注意的是,删除仅当尾随空字符串是由拆分过程创建时才有意义。对于空字符串,由于它无法进一步拆分,因此拆分它将产生一个具有单个空字符串值的数组。这是因为 split() 没有执行任何实际的拆分,因此空字符串代表原始输入,而不是拆分操作生成的空字符串。
以上是如何防止 Java 的 split() 方法删除空字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!