我需要传递给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, , »]
其他回答
String str = "Hello World";
String res[] = str.split("\\s+");
你可以使用下面的语句用换行符分割字符串:
String textStr[] = yourString.split("\\r?\\n");
你可以使用下面的语句用空格分割字符串:
String textStr[] = yourString.split("\\s+");
要使用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+”应该可以
之类的东西
myString.split("\\s+");
这将所有空格分组为分隔符。
如果我有一个字符串:
"Hello[space character][tab character]World"
这将产生字符串“Hello”和“World”,并省略[空格]和[制表符]之间的空白。
正如VonC指出的,反斜杠应该转义,因为Java首先会尝试将字符串转义为一个特殊字符,并将其发送给解析。你想要的是字面上的“\s”,这意味着你需要传递“\\s”。这可能会让人有点困惑。
s相当于[\\t\\n\\x0B\\f\ r]。
推荐文章
- 在Java中使用UUID的最重要位的碰撞可能性
- 如何在Typescript中解析JSON字符串
- 转换列表的最佳方法:map还是foreach?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 使用String.split()和多个分隔符
- 用javascript检查输入字符串中是否包含数字
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- Swing和AWT的区别是什么?
- 为什么Java流是一次性的?