![](/img/trans.png)
[英]ArrayIndexOutOfBoundsException for String.split()
[英]ArrayIndexOutOfBoundsException after String.split()
我从服务器得到一个字符串值:
String fileName = requestServer();
//My log shows fileName="properties.txt"
String name = fileName.trim().split(".")[0];
但是,当我尝试使用上面的代码获取不带“ .txt”的名称时,我得到了
ArrayIndexOutOfBoundsException: length=0, index=0.
我看不到我的代码在哪里错误,为什么会出现此异常?
这: String name = fileName.trim().split(".")[0];
应该类似于: String name = fileName.trim().split("\\\\.")[0];
。 的.
在正则表达式语言中,意味着任何字符 (因为String.split()
使用regular expression
作为参数。),这会导致字符串在每个字符上分割,从而返回一个空数组。
的\\
infront .
会跳过句点并使正则表达式引擎像实际那样对待它.
字符。 需要额外的\\
以便可以将初始\\
进行转义。
用这个
String name = fileName.trim().split("\\.")[0];
正则表达式\\的说明。
.
是一个正则表达式元字符,可以匹配任何内容(换行符除外)。 既然我们要匹配一个文字。 我们用来逃避它。 由于Java String和regex引擎都使用\\作为转义字符,因此我们需要使用\\\\
。
split(...)
返回一个空数组,因为它使用一个正则表达式作为参数。 "."
适用于每个单词字符。 该正则表达式找到的字符不包含在结果中。
使用"\\\\."
而不是分裂。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.