繁体   English   中英

String.split()之后的ArrayIndexOutOfBoundsException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM