是否可以使用分割功能与'。'作为划界正则表达式?

时间:2015-02-04 01:16:39

标签: java

我想分割字符串变量的内容,但我想将该点用作分隔正则表达式,我的代码不起作用。

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);
    }
}

3 个答案:

答案 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("."))