我需要传递给java.lang.String.split()以使用所有空白字符(' ','\t', '\n'等)作为分隔符将字符串分割为子字符串数组的正则表达式模式是什么?
当前回答
要使用Unicode空白分隔字符串,需要使用
s.split("(?U)\\s+")
^^^^
(?U)内联嵌入标志选项相当于Pattern。UNICODE_CHARACTER_CLASS使\s的简写字符类匹配空白Unicode类别中的任何字符。
如果要使用空白分隔并将空白保留在结果数组中,请使用
s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")
参见正则表达式演示。参见Java演示:
String s = "Hello\t World\u00A0»";
System.out.println(Arrays.toString(s.split("(?U)\\s+"))); // => [Hello, World, »]
System.out.println(Arrays.toString(s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")));
// => [Hello, , World, , »]
其他回答
“\\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);
}
}
}
String str = "Hello World";
String res[] = str.split("\\s+");
在大多数正则表达式方言中,都有一组方便的字符摘要可以用于这种事情——这些都是需要记住的:
\w -匹配任何单词字符。
\W -匹配任何非单词字符。
\s -匹配任何空白字符。
只匹配空白字符。
\d -匹配任何数字。
D -除数字以外的任何东西都可以匹配。
搜索“Regex Cheatsheets”,你会得到很多有用的摘要。
之类的东西
myString.split("\\s+");
这将所有空格分组为分隔符。
如果我有一个字符串:
"Hello[space character][tab character]World"
这将产生字符串“Hello”和“World”,并省略[空格]和[制表符]之间的空白。
正如VonC指出的,反斜杠应该转义,因为Java首先会尝试将字符串转义为一个特殊字符,并将其发送给解析。你想要的是字面上的“\s”,这意味着你需要传递“\\s”。这可能会让人有点困惑。
s相当于[\\t\\n\\x0B\\f\ r]。
推荐文章
- 将所有非字母数字字符替换为空字符串
- 漂亮地打印Java集合(toString不返回漂亮输出)
- 静态嵌套类在Java,为什么?
- 如何防止Eclipse在启动时挂起?
- Optional和Optional的区别是什么?flatMap和Optional.map?
- 使用Pandas为字符串列中的每个值添加字符串前缀
- 我如何能匹配一个字符串与正则表达式在Bash?
- Java中枚举的命名:单数还是复数?
- JavaBean和POJO之间的区别是什么?
- 注释在Java中如何使用,在哪里使用?
- 如何在Ubuntu下安装JDK 11 ?
- 如何测试一个字符串是否包含列表中的一个子字符串,在熊猫?
- Spring Boot -无法确定数据库类型为NONE的嵌入式数据库驱动程序类
- 如何转换/解析从字符串到字符在java?
- 如何在Android中动态更改菜单项文本