代码之家  ›  专栏  ›  技术社区  ›  mcjabberz

如何将带有任何空格字符的字符串拆分为分隔符?

  •  523
  • mcjabberz  · 技术社区  · 16 年前

    什么样的正则表达式模式需要我传递给 java.lang.String.split() 方法将字符串拆分为使用所有空格字符(“”、'\t'、'\n'等)作为分隔符的子字符串数组?

    12 回复  |  直到 6 年前
        1
  •  912
  •   Henrik Paul    9 年前

    有点像

    myString.split("\\s+");
    

    将所有空格分组为分隔符。

    所以如果我有绳子:

    "Hello[space][tab]World"

    这将产生字符串 "Hello" "World" 并省略 [space] 以及 [tab] .

    正如VonC指出的,应该避免反斜杠,因为Java首先尝试将字符串从一个特殊字符中解脱出来,然后发送 那个 被解析。你想要的是文字 "\s" 也就是说,你需要通过 "\\s" . 这会让人有点困惑。

    这个 \\s 等于 [ \\t\\n\\x0B\\f\\r]

        2
  •  85
  •   Amit Joki    9 年前

    在大多数regex方言中,您可以使用一组方便的字符摘要来进行这类事情-这些是需要记住的好的字符:

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

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

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

    \S -匹配除空白字符以外的任何字符。

    \d -匹配任何数字。

    \D -匹配除数字以外的任何内容。

    搜索“regex作弊单”会给你很多有用的总结。

        3
  •  61
  •   Andy Thomas    8 年前

    为了让这个工作 在JavaScript中 ,我必须做以下工作:

    myString.split(/\s+/g)
    
        4
  •  35
  •   VonC    16 年前

    “\\s+”应该能做到这一点

        5
  •  10
  •   jake_astub    10 年前

    另外,您可能有一个Unicode不间断空格xa0…

    String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
    
        6
  •  10
  •   Arrow    8 年前
    String string = "Ram is going to school";
    String[] arrayOfString = string.split("\\s+");
    
        7
  •  8
  •   Felix Scheffer    11 年前

    ApacheCommonsLang有一个方法来拆分字符串,其中空格字符作为分隔符:

    StringUtils.split("abc def")
    

    http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

    这可能比regex模式更容易使用。

        8
  •  2
  •   Ria    11 年前

    因为它是一个正则表达式,而且我假设您也不希望使用非字母数字字符,如逗号、点等,这些字符可以被空格包围(例如,“1,2”应该给出[1][2]),所以它应该是:

    myString.split(/[\s\W]+/)
    
        9
  •  2
  •   Bill K    6 年前

    我很惊讶没有人提到没有参数的string.split()。这不是它的用途吗?如:

    "abc def ghi".split()
    
        10
  •  1
  •   RajeshVijayakumar    10 年前

    可以使用以下语句按换行符拆分字符串:

     String textStr[] = yourString.split("\\r?\\n");
    

    可以使用以下语句按空格拆分字符串:

    String textStr[] = yourString.split("\\s+");
    
        11
  •  1
  •   Skywalker    9 年前
    String str = "Hello   World";
    String res[] = str.split("\\s+");
    
        12
  •  -1
  •   Risith Ravisara    8 年前

    学习这个代码。祝你好运

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