如何使用任何空格字符作为分隔符分割字符串


555

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

Answers:


955

某些东西

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

这会将所有空白分组为分隔符。

因此,如果我有字符串:

"Hello[space][tab]World"

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

正如VonC所指出的那样,应将反斜杠转义,因为Java首先会尝试将字符串转义为特殊字符,然后将发送进行解析。您想要的是字面量"\s",这意味着您需要通过"\\s"。可能会造成一些混乱。

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


1
谢谢您的提醒。我只是从臀部编码:)
亨里克·保罗

34
请注意,您需要trim()首先:trim().split("\\s++")-否则,例如,拆分abc将首先发出两个空字符串。
Marcus Junius Brutus 2014年

为什么在答案结尾附近使用四个反斜杠?即。"\\\\s"
Michael Borkowski 2015年

“” .trim()。split(“ \\ s +”)-空字符串拆分的长度为1。“ term” .trim()。split(“ \\ s +”)-长度也为1 。
PaulSchell

88

在大多数regex方言中,可以使用一组方便的字符摘要来进行此类操作-这些是值得记住的好方法:

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

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

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

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

\d -匹配任何数字。

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

搜索“ Regex备忘单”应该为您提供很多有用的摘要。




64

为了使用Javascript进行此工作,我必须执行以下操作:

myString.split(/\s+/g)

15
这是用Java语言编写的。我也没有注意:)
miracle2k'5

14
哎呀。我的错。也许这个答案仍然可以帮助其他在寻找Javascript答案时偶然发现此线程的人。:-)
Mike Manard 2012年

哈哈我一直在寻找JavaScript的答案,偶然遇到了这个问题,然后在我离开之前注意到了你的答案。+1。
克里斯(Kris)2014年

那很棒!我很高兴听到这个答案对某人有用,即使它确实回答了错误的问题。:-)
Mike Manard 2014年

这对我也有很大帮助,需要拆分服务器参数:)
ProgrammerPlays


11

另外,您可能还有一个UniCode不间断空格xA0 ...

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

这对我有帮助!
Surasin Tancharoen

10
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

@Stephan我没看到那些。


2

由于它是一个正则表达式,并且我假设您也不希望非字母数字字符(例如逗号,点号等)可能会被空格包围(例如,“一个,两个”应为[one] [two]),它应该是:

myString.split(/[\s\W]+/)

1

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

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

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

String textStr[] = yourString.split("\\s+");


-1

学习这段代码..祝你好运

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

        } 
    }
}

您能否详细说明您的答案?
斯蒂芬,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.