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是的,现在可以了。