Java 线 split 从 "." /观点/
为什么这个代码的第二行弹出
?
它有效:
我用 Java 7.
ArrayIndexOutOfBoundsException
?
String filename = "D:/some folder/001.docx";
String extensionRemoved = filename.split/"."/[0];
它有效:
String driveLetter = filename.split/"/"/[0];
我用 Java 7.
没有找到相关结果
已邀请:
4 个回复
快网
赞同来自:
文字
观点:
String extensionRemoved = filename.split/"\\."/[0];
否则,你被分成了 regex
, 什么方式 "any character".
注意创建一个反向编织线所需的双重饲料松弛 regex.
你得到
, 因为你的输入字符串只是一个点 , IE
, 这是一个边界案例,它创建一个空数组 split 在这一点;
删除所有空白 trailing 从结果中,但由于点分离点,只留下两个空格,除了空格之后 trailing 你留在一个空的阵列。
避免收据
对于此边界箱,请使用重载版本
https://docs.oracle.com/javase ... -int-
, 其中具有第二个参数,即结果阵列的分辨率限制。 如果是价值
消极的
, 然后去除空间的行为 trailing 生成的数组关闭:
".".split/"\\.", -1/ // returns an array of two blanks, ie ["", ""]
也就是说,何时
- 这只是一个点
, 称呼
filename.split/"\\.", -1/[0]
将返回差距,但呼叫
filename.split/"\\."/[0]
卖空
.
诸葛浮云
赞同来自:
final String extensionRemoved = filename.split/"\\."/[0];
我希望它会有所帮助
二哥
赞同来自:
- 这是表示任何字符的正则表达式的保留符号。
相反,我们必须使用以下声明:
String extensionRemoved = filename.split/"\\."/[0];
石油百科
赞同来自:
否则,该点被解释为正则表达式中的任何字符。