Java中的split()方法不适用于点(.)

Bha*_*esh 177 java string split

我准备了一个简单的代码片段,以便将错误的部分与我的Web应用程序分开.

public class Main {

    public static void main(String[] args) throws IOException {
        System.out.print("\nEnter a string:->");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String temp = br.readLine();

        String words[] = temp.split(".");

        for (int i = 0; i < words.length; i++) {
            System.out.println(words[i] + "\n");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在构建Web应用程序JSF时测试了它.我只是想知道为什么在上面的代码temp.split(".")中不起作用.该声明,

System.out.println(words[i]+"\n"); 
Run Code Online (Sandbox Code Playgroud)

在控制台上不显示任何内容意味着它不会通过循环.当我将temp.split()方法的参数更改为其他字符时,它像往常一样正常工作.可能是什么问题?

rob*_*off 455

java.lang.String.split在正则表达式上拆分,在正.则表达式中表示"任何字符".

试试temp.split("\\.").

  • 它对我也有用.我在做"|" 它与"\\ |"一起使用.谢谢 (4认同)

mil*_*ose 61

文件上split()说:

将此字符串拆分为给定正则表达式的匹配项.

(强调我的.)

点是正则表达式语法中的特殊字符.Pattern.quote()如果要将拆分放在文字字符串模式上,请在参数上使用split():

String[] words = temp.split(Pattern.quote("."));
Run Code Online (Sandbox Code Playgroud)


ysr*_*srb 9

尝试:

String words[]=temp.split("\\.");
Run Code Online (Sandbox Code Playgroud)

方法是:

String[] split(String regex) 
Run Code Online (Sandbox Code Playgroud)

"" 是正则表达式中的保留字符


mba*_*rov 9

该方法采用正则表达式而不是字符串,并且点在正则表达式中具有特殊含义.像这样逃避它split("\\.").你需要一个双反斜杠,第二个逃脱第一个.


小智 5

\\.这是一个简单的答案.这是一个简单的代码供您使用.

while (line != null) {
    //             
    String[] words = line.split("\\.");
    wr = "";
    mean = "";
    if (words.length > 2) {
        wr = words[0] + words[1];
        mean = words[2];

    } else {
        wr = words[0];
        mean = words[1];
    }
}
Run Code Online (Sandbox Code Playgroud)