java - Java String split 相关的一个问题
问题描述
我发现 String split 的以下行为非常令人不快:
String[] parts = "0..".split("\\.");
这将导致部分仅包含“0”;但是,如果输入从“0..”更改为“..0”
String[] parts = "..0".split("\\.");
这将导致部分包含“”、“”和“0”。有人可以帮助解释为什么 split 会这样吗?这个方法是如何实现的?
解决方案
引用 Java 文档:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
此方法的工作方式就像通过使用给定表达式和零限制参数调用双参数拆分方法一样。因此,尾随的空字符串不包含在结果数组中。
这意味着空字符串仅在至少有一个非空字符串接续它们时才包括在内。
import java.util.Arrays;
public class StringQ{
public static void main(String args[]){
String first = "0..";
System.out.println(Arrays.asList(first.split("\\.")));
// [0]
String second = "..0";
System.out.println(Arrays.asList(second.split("\\.")));
// [, , 0]
String third = "...0..0...";
System.out.println(Arrays.asList(third.split("\\.")));
// [, , , 0, , 0]
}
}
推荐阅读
- tensorflow - TensorFlow 需要很长时间才能将数据加载到 tf.Dataset
- python - AttributeError:“函数”对象没有属性“get_value”
- python - 具有周、年和点击次数的时间序列图
- angular - 带有自定义表单组件的嵌套模板表单,无 ControlContainer 提供程序
- node.js - 甚至无法在树莓派上运行基本的 Node.Js 文件
- php - 错误标记图
- android - Android workmanager 计划的工作人员在任务被杀死后丢失
- networking - 多路径 TCP 数据包乱序
- javascript - jquery数据表不排序
- javascript - 尝试将 Jquery .load() 与多个 Id 选择器一起使用但没有成功