【发布时间】:2010-12-01 14:30:56
【问题描述】:
据我了解,反斜杠点 (\.) 表示任何字符中的一个字符?所以因为反斜杠是转义,所以应该是反斜杠反斜杠点("\\.")
这对字符串有什么作用?我刚刚在我正在处理的现有代码中看到了这一点。据我了解,它将字符串拆分为单个字符。为什么这样做而不是String.toCharArray()。所以这会将字符串拆分为一个字符串数组,该数组中的每个字符串只包含一个字符?
【问题讨论】:
据我了解,反斜杠点 (\.) 表示任何字符中的一个字符?所以因为反斜杠是转义,所以应该是反斜杠反斜杠点("\\.")
这对字符串有什么作用?我刚刚在我正在处理的现有代码中看到了这一点。据我了解,它将字符串拆分为单个字符。为什么这样做而不是String.toCharArray()。所以这会将字符串拆分为一个字符串数组,该数组中的每个字符串只包含一个字符?
【问题讨论】:
正则表达式“。”将匹配您所说的任何字符。但是转义点“\”。将匹配文字点字符。因此 192.168.1.1 在“\”上拆分。将导致 {"192", "168", "1", "1"}。
您的措辞并不完全清楚,但我认为这就是您要问的。
【讨论】:
我的猜测是您错过了反斜杠 ('\') 字符是 Java 字符串文字中的转义字符。因此,当您想在写成 Java 字符串的正则表达式中使用 '\' 转义时,您需要对其进行转义;例如
Pattern.compile("\."); // Java syntax error
// A regex that matches a (any) character
Pattern.compile(".");
// A regex that matches a literal '.' character
Pattern.compile("\\.");
// A regex that matches a literal '\' followed by one character
Pattern.compile("\\\\.");
String.split(String separatorRegex) 方法将字符串拆分为由匹配正则表达式的子字符串分隔的子字符串。所以str.split("\\.") 会将str 拆分为由单个文字“。”分隔的子字符串。字符。
【讨论】:
"\." 是Java 字符串文字,而\. 不是Java 字符串文字中的合法转义序列。