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

java string whitespace split

653306 观看

12回复

4568 作者的声誉

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

作者: mcjabberz 的来源 发布者: 2008 年 10 月 22 日

回应 12


35

880219 作者的声誉

“\\ s +”应该可以解决问题

作者: VonC 发布者: 2008 年 10 月 22 日

85

8249 作者的声誉

在大多数正则表达方言中,有一组方便的字符摘要可用于此类事情 - 这些都是值得记住的好方法:

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

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

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

\S - 匹配除空格字符之外的任何内容。

\d - 匹配任何数字。

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

搜索“Regex Cheatsheets”应该会奖励你很多有用的摘要。

作者: glenatron 发布者: 2008 年 10 月 22 日

926

44247 作者的声誉

决定

有些东西

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

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

所以,如果我有字符串:

"Hello[space][tab]World"

这应该产生字符串"Hello""World"并省略[space]和之间的空白空间[tab]

正如VonC指出的那样,反斜杠应该被转义,因为Java会首先尝试将字符串转义为特殊字符,然后发送进行解析。你想要的是文字"\s",这意味着,你需要通过"\\s"。它可能会有点混乱。

\\s相当于[ \\t\\n\\x0B\\f\\r]

作者: Henrik Paul 发布者: 2008 年 10 月 22 日

2

21 作者的声誉

因为它是一个正则表达式,并且我假设你也不会想要逗号,点等可以被空白包围的非字母数字字符(例如“一,二”应该给[一] [两]),它应该是:

myString.split(/[\s\W]+/)
作者: Rishabh 发布者: 2012 年 2 月 14 日

61

912 作者的声誉

为了在Javascript中使用它,我必须执行以下操作:

myString.split(/\s+/g)
作者: Mike Manard 发布者: 2012 年 3 月 1 日

8

146 作者的声誉

Apache Commons Lang有一种方法可以将带有空格字符的字符串拆分为分隔符:

StringUtils.split("abc def")

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

这可能比正则表达式更容易使用。

作者: Felix Scheffer 发布者: 2013 年 12 月 1 日

1

7200 作者的声誉

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

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

您可以使用以下语句通过Whitespace拆分字符串:

String textStr[] = yourString.split("\\s+");
作者: RajeshVijayakumar 发布者: 2014 年 9 月 1 日

10

148 作者的声誉

你也可以拥有一个UniCode不间断空间xA0 ......

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
作者: jake_astub 发布者: 2014 年 9 月 9 日

1

309 作者的声誉

String str = "Hello   World";
String res[] = str.split("\\s+");
作者: Olivia Liao 发布者: 2015 年 4 月 12 日

10

163 作者的声誉

String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");
作者: Arrow 发布者: 2016 年 3 月 31 日

-1

11 作者的声誉

研究这段代码..祝你好运

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

        } 
    }
}
作者: Risith Ravisara 发布者: 2016 年 10 月 24 日

2

54574 作者的声誉

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

"abc def ghi".split()
作者: Bill K 发布者: 2018 年 3 月 12 日
32x32