Java String.split()后的ArrayIndexOutOfBoundsException

Java String.split()后的ArrayIndexOutOfBoundsException,java,Java,我从服务器获取了一个字符串值: String fileName = requestServer(); //My log shows fileName="properties.txt" String name = fileName.trim().split(".")[0]; 但是当我尝试用上面的代码获取没有“.txt”的名称时,我得到了 ArrayIndexOutOfBoundsException: length=0, index=0. 我不知道我的代码哪里出错,为什么会出现此异常?此:S

我从服务器获取了一个字符串值:

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]。正则表达式语言中的
表示任何字符(因为它将a作为参数),这会导致字符串在每个字符上拆分,从而返回空数组


前面的
将跳过该句点,并导致正则表达式引擎将其视为实际的
字符。需要额外的
\
,以便可以转义初始的
\

此:
字符串名称=fileName.trim().split(“.”[0]应该是这样的:
String name=fileName.trim().split(“\\”)[0]。正则表达式语言中的
表示任何字符(因为它将a作为参数),这会导致字符串在每个字符上拆分,从而返回空数组

前面的
将跳过该句点,并导致正则表达式引擎将其视为实际的
字符。需要额外的
\
,以便可以转义初始的
\

使用此选项

String name = fileName.trim().split("\\.")[0];
正则表达式的解释\

是一个正则表达式元字符,可以匹配任何内容(新行除外)。因为我们想要匹配一个文本。我们带着它逃跑。因为Java字符串和正则表达式引擎都使用\作为转义字符,所以我们需要使用
\\

使用这个

String name = fileName.trim().split("\\.")[0];
正则表达式的解释\

是一个正则表达式元字符,可以匹配任何内容(新行除外)。因为我们想要匹配一个文本。我们带着它逃跑。由于Java字符串和正则表达式引擎都使用\作为转义字符,我们需要使用
\\
拆分(…)
返回一个空数组,因为它将正则表达式作为参数<代码>“
用于每个单词字符。该正则表达式找到的字符不包括在结果中

使用
“\\.”
进行拆分。

拆分(…)
返回一个空数组,因为它以正则表达式作为参数<代码>“
用于每个单词字符。该正则表达式找到的字符不包括在结果中


请注意,
String\split
接受一个正则表达式作为参数,
是一个特殊字符,您需要像
\\\一样对其进行转义。
请注意,
String\split
接受一个正则表达式作为参数,
是一个特殊字符,你需要像
\\\一样对其进行转义。
@反斜杠并不意味着它不是useful@grexter89当然,这是有用的,但答案必须解释正在做什么以及为什么。仅提供代码不是本网站的目的。@NiksTyagi是的,现在可以了。@反斜杠并不意味着它不是useful@grexter89当然,这是有用的,但答案必须解释正在做什么以及为什么。只提供代码不是这个网站的目的。@NiksTyagi是的,现在可以了。