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

2022-08-31 06:03:41

我准备了一个简单的代码片段,以便将错误部分与我的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");
        }
    }
}

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

System.out.println(words[i]+"\n"); 

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


答案 1

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

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


答案 2

关于 split() 的文档说:

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

(强调我的。

点是正则表达式语法中的特殊字符。在参数上使用 Pattern.quote() 来 split() 如果您希望拆分位于文本字符串模式上:

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