我需要传递给java.lang.String.split()以使用所有空白字符(' ','\t', '\n'等)作为分隔符将字符串分割为子字符串数组的正则表达式模式是什么?


当前回答

你也可以有一个UniCode不间断空格xA0…

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking

其他回答

你所需要的是使用Java Ragex引擎的一个特殊字符来分割,

那就是- WhiteSpace Character

\d表示数字:[0-9] \D表示非数字:[^0-9] \s表示一个空白字符,包括[\t\n\x0B\f\r] \S表示非空格字符,如[^\ S] \v表示垂直空格字符[\n\x0B\f\r\x85\u2028\u2029] \V表示一个非垂直空格字符,如[^\ V] \w表示单词字符[a- za - z_0 -9] \W表示非单词字符,如[^\ W]

在这里,要记住的关键点是,小字母字符\s表示所有类型的空白,包括单个空格[]、制表符[]或任何类似的空格。

所以,如果你尝试一下会像这样

String theString = "Java<a space><a tab>Programming"
String []allParts = theString.split("\\s+");

您将得到所需的输出。


一些非常有用的链接:

Split()方法 Regexr split-Java 11 RegularExpInfo PatternClass


希望,这可能会帮助你最好!!

在大多数正则表达式方言中,都有一组方便的字符摘要可以用于这种事情——这些都是需要记住的:

\w -匹配任何单词字符。

\W -匹配任何非单词字符。

\s -匹配任何空白字符。

只匹配空白字符。

\d -匹配任何数字。

D -除数字以外的任何东西都可以匹配。

搜索“Regex Cheatsheets”,你会得到很多有用的摘要。

“\\s+”应该可以

学习代码..祝你好运

    import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");      
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);

        } 
    }
}

你也可以有一个UniCode不间断空格xA0…

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking