我正在尝试使用String类的实例方法split()。但是,当我使用.
作为split()方法的参数并尝试使用Arrays.toString(s2)
将其打印出来时,只打印出一个空数组。
为什么会这样?
String s1 = "hello.world";
String[] s2 = s1.split(".");
System.out.println(Arrays.toString(s2));
答案 0 :(得分:4)
这" 怪异"行为是因为你没有在正则表达式中删除点...即你需要做ConnectivityManager.TYPE_MOBILE_HIPRI
而不是s1.split("\\.");
1.split(".");
只是为了学习过程,正则表达式中的点属于已知的元字符,并且每次尝试使用正则表达式时,都必须将其转换为...
请查看此tutorial以获取更多信息...
有12个特殊含义的字符:反斜杠\, 插入符号^,美元符号$,句点或点,垂直条或 管道符号|,问号?,星号或星号*,加号 符号+,左括号(,右括号)和 打开方括号[,开口花括号{,这些特别 字符通常被称为"元字符"。
答案 1 :(得分:2)
根据API,split
方法将正则表达式作为参数。碰巧的是,在正则表达式语法中,句点意味着任何字符,因此您将分割每个字符,这就是您获取空数组的原因。
要解决此问题,您需要像以下一样逃避这段时间:.split("\\.")
。额外的\
指示正则表达式引擎将句点视为实际字符,没有任何特殊含义。
答案 2 :(得分:2)
您可以使用这些方法转义特殊字符
1.String test =“abc.xyz”;
String [] output1 = test.split(“\。”);
2.String test =“abc.xyz”;
String [] output2 = test.split(Pattern.quote(“。”));
你可以参考 split a string
答案 3 :(得分:1)
。是正则表达式中的一个特殊字符,split接受正则表达式作为参数,你应该逃避它。
答案 4 :(得分:1)
试试,
String[] s2 = s1.split("\\.");
有12个字符具有特殊含义:反斜杠\
,插入符^
,美元符号$
,句点或点.
,垂直条或竖线符号|
,问号?
,星号或星号*
,加号+
,左括号(
,右括号{{ 1}},以及开口方括号)
,开口大括号[
,这些特殊字符通常称为"元字符"。
如果要在正则表达式中使用任何这些字符作为文字,则需要使用反斜杠转义它们。在文字Java字符串中,反斜杠是一个转义字符。文字字符串{
是一个反斜杠。