如何将带有任何空格字符的字符串拆分为分隔符?
-
03-07-2019 - |
题
我需要传递给 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")
这可能比正则表达式更容易使用。
因为它是一个正则表达式,并且我假设你也不希望非字母数字字符如逗号,点等可以被空格包围(例如“一,二”应该给[一] [两个],应该是:
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);
}
}
}