为什么在尝试使用split拆分字符串时打印出一个空数组("。")

时间:2016-04-12 06:38:21

标签: java arrays string split

我正在尝试使用String类的实例方法split()。但是,当我使用.作为split()方法的参数并尝试使用Arrays.toString(s2)将其打印出来时,只打印出一个空数组。

为什么会这样?

String s1 = "hello.world";
String[] s2 = s1.split(".");
System.out.println(Arrays.toString(s2));

5 个答案:

答案 0 :(得分:4)

这" 怪异"行为是因为你没有在正则表达式中删除点...即你需要做ConnectivityManager.TYPE_MOBILE_HIPRI而不是s1.split("\\.");

实施例

1.split(".");

只是为了学习过程,正则表达式中的点属于已知的元字符,并且每次尝试使用正则表达式时,都必须将其转换为...

请查看此tutorial以获取更多信息...

  

有12个特殊含义的字符:反斜杠\,   插入符号^,美元符号$,句点或点,垂直条或   管道符号|,问号?,星号或星号*,加号   符号+,左括号(,右括号)和   打开方括号[,开口花括号{,这些特别   字符通常被称为"元字符"。

答案 1 :(得分:2)

根据APIsplit方法将正则表达式作为参数。碰巧的是,在正则表达式语法中,句点意味着任何字符,因此您将分割每个字符,这就是您获取空数组的原因。

要解决此问题,您需要像以下一样逃避这段时间:.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字符串中,反斜杠是一个转义字符。文字字符串{是一个反斜杠。