Java 使用句点(.)拆分的字符串显示不同的行为

Java 使用句点(.)拆分的字符串显示不同的行为,java,string,Java,String,我正在处理String并尝试了的split(),比如:- String s = "Hi.Hello"; System.out.println(Arrays.toString(s.split("."))); 上述代码输出空数组。但是如果我逃出,比如:- String s = "Hi.Hello"; System.out.println(Arrays.toString(s.split("\\."))); 它的正确输出

我正在处理
String
并尝试了
split()
,比如:-

String s = "Hi.Hello";
System.out.println(Arrays.toString(s.split(".")));
上述代码输出空数组。但是如果我逃出
,比如:-

String s = "Hi.Hello";
System.out.println(Arrays.toString(s.split("\\.")));
它的正确输出为
[Hi,Hello]

所以我想知道:-

为什么我需要转义
,但是
它通常不被视为
字符串中的转义字符,因为我们可以直接使用

String.split(String)
方法将正则表达式作为参数。在正则表达式中,“.”表示“任何字符”,因此如果确实要按“.”而不是按“任何字符”拆分,则必须对其进行转义(通过添加“\\”)

有关正则表达式的初学者,请参阅的api文档。

String.split(String)
方法将正则表达式作为参数。在正则表达式中,“.”表示“任何字符”,因此如果确实要按“.”而不是按“任何字符”拆分,则必须对其进行转义(通过添加“\\”)


有关正则表达式的初学者,请参阅的api文档。

您不能仅使用
拆分它,因为拆分()

围绕给定正则表达式的匹配项拆分此字符串。


用正则表达式。表示“匹配任何字符”,因此必须使用\\而不是\来转义它,因为还必须转义\字符

您不能仅使用
来拆分它,因为split()

围绕给定正则表达式的匹配项拆分此字符串。

用正则表达式。表示“匹配任何字符”,因此必须使用\\而不是\来转义它,因为还必须转义\字符

对之前的答案(正确答案)进行少量补充

通常最好使用ApacheCommonsLang()中的
StringUtils.split
。它采用纯字符串(而不是正则表达式)作为参数。此外,它的行为更加直观:

StringUtils.split("a..b.c", ".") = ["a", "b", "c"]
vs

对先前答案(正确答案)的小补充

通常最好使用ApacheCommonsLang()中的
StringUtils.split
。它采用纯字符串(而不是正则表达式)作为参数。此外,它的行为更加直观:

StringUtils.split("a..b.c", ".") = ["a", "b", "c"]
vs