如何将任何空格字符作为分隔符分割string?
什么样的正则expression式模式需要我传递给java.lang.String.split()
方法来使用所有空格字符('','\ t','\ n'等)将一个string拆分为一个子string数组。作为分隔符?
东西在线
myString.split("\\s+");
这将所有空格分隔为一个分隔符。
所以,如果我有string:
"Hello[space][tab]World"
这应该产生string"Hello"
和"World"
并省略[space]
和[tab]
之间的空白空间。
正如VonC所指出的那样,反斜杠应该被转义,因为Java首先会尝试将string转义为特殊字符,然后发送这个string进行parsing。 你想要的是文字"\s"
,这意味着你需要通过"\\s"
。 它可能会有点混乱。
\\s
相当于[ \\t\\n\\x0B\\f\\r]
在大多数正则expression式中,有一组方便的人物总结,可以用于这种事情 – 这些都是值得记住的好方法:
\w
– 匹配任何单词字符。
\W
– 匹配任何非单词字符。
\s
– 匹配任何空白字符。
\S
– 与空白字符匹配。
\d
– 匹配任何数字。
\D
– 匹配除数字以外的任何内容。
search“正则expression式Cheatsheets”应该会给你一大堆有用的总结。
为了使这个工作在Javascript中 ,我必须做到以下几点:
myString.split(/\s+/g)
“\\ s +”应该做的伎俩
你也可能有一个UniCode不间断空间xA0 …
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
Apache Commons Lang有一个方法可以用空白字符作为分隔符来分割string:
StringUtils.split("abc def")
这可能比正则expression式更容易使用。
String string = "Ram is going to school"; String[] arrayOfString = string.split("\\s+");
既然它是一个正则expression式,而且我假设你也不想要像逗号,点等可以被空白包围的非字母数字字符(例如“one,two”应该给出[one] [two]),它应该是:
myString.split(/[\s\W]+/)
您可以使用以下语句通过换行来拆分string:
String textStr[] = yourString.split("\\r?\\n");
您可以使用下面的语句通过空白分割一个string:
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); } } }