我需要传递给 java.lang.String.split()方法以使用所有空白字符('','\ t ','\ n'等)作为分隔符?

有帮助吗?

解决方案

中的某些内容
myString.split("\\s+");

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

所以,如果我有字符串:

<代码>&QUOT;你好[空间] [标签]世界&QUOT;

这应该产生字符串&quot; Hello&quot; &quot; World&quot; ,并省略 [space] 和<代码> [标签]

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

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

其他提示

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

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

\ W - 匹配任何非字符。

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

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

\ d - 匹配任何数字。

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

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

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

myString.split(/\s+/g)

&QUOT; \\ S +&QUOT;应该做的伎俩

此外,您可能拥有UniCode不间断空格xA0 ...

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

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)

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

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

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

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

"abc def ghi".split()

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

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

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

String textStr[] = yourString.split("\\s+");
String str = "Hello   World";
String res[] = str.split("\\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);

        } 
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top