我想分割字符串变量的内容,但我想将该点用作分隔正则表达式,我的代码不起作用。
public class Test {
public static void main(String [] a){
String ch = "r.a.c.h.i.d";
String[] tab;
tab=ch.split(".");
System.out.println(tab.length);
for(String e : tab)System.out.println(e);
}
}
答案 0 :(得分:1)
将tab=ch.split(".");
更改为tab=ch.split("\\.");
。你需要逃避点,因为否则它被视为传递给split的正则表达式中的特殊字符。
答案 1 :(得分:1)
tab = ch.split("\\.");
一个斜杠是正则表达式的转义字符。但是在Java中你需要有第二个斜杠,因为你必须逃避第一个斜杠。
答案 2 :(得分:0)
是的,这是可能的。在正则表达式中.
means any character。
预定义的字符类
。任何字符(可能与行终止符匹配也可能不匹配)
所以你必须逃避它以提供文字.
的含义。使用反斜杠字符转义它,提供两个反斜杠,因为Java需要反斜杠字符本身进行转义。
使用正则表达式"\\."
。
通常,要从包含特殊含义字符的表达式中获取文字字符,可以使用Pattern.quote
method。
此方法生成一个String,可用于创建一个与字符串s匹配的Pattern,就像它是一个文字模式一样。
split(Pattern.quote("."))