以点作为分隔符的拆分字符串
我想知道我是否要以正确的方式拆分字符串?我的代码是:.
String[] fn = filename.split(".");
return fn[0];
我只需要字符串的第一部分,这就是我返回第一项的原因。我问是因为我注意到API中这意味着任何字符,所以现在我被困住了。.
我想知道我是否要以正确的方式拆分字符串?我的代码是:.
String[] fn = filename.split(".");
return fn[0];
我只需要字符串的第一部分,这就是我返回第一项的原因。我问是因为我注意到API中这意味着任何字符,所以现在我被困住了。.
split()
接受正则表达式,因此您需要转义才能不将其视为正则表达式元字符。下面是一个示例:.
String[] fn = filename.split("\\.");
return fn[0];
我在这里只看到解决方案,但没有对问题的完整解释,所以我决定发布这个答案
您需要了解一些关于. 方法:text.split(delim)
split
delim
text
a,b,c,,
,
split
["a" "b" "c" "" ""]
您还需要知道 dot .
是正则表达式中的特殊字符。它表示任何字符(行分隔符除外,但这可以用标志进行更改)。Pattern.DOTALL
所以对于字符串,如果我们在方法上拆分,就会"abc"
"."
split
["" "" "" ""]
这意味着我们将得到作为结果的空数组(没有元素,甚至没有空字符串),所以我们不能使用,因为没有索引0。[]
fn[0]
要解决此问题,您只需要创建表示点的正则表达式。为此,我们需要逃避它。有几种方法可以做到这一点,但最简单的可能是通过使用(在String中需要写成因为那里也很特殊,需要另一个被转义)。.
\
"\\"
\
\
因此,您的问题的解决方案可能看起来像
String[] fn = filename.split("\\.");
奖金
您还可以使用其他方法来转义该点,例如
split("[.]")
split("\\Q.\\E")
Pattern.LITERAL
split(Pattern.quote("."))