[英]Tokenizing special characters in a string
我正在编写一些代码,但遇到了关于拆分字符串中某些字符的问题。 当给出下面的字符串时,我可以将它分成单独的标记:
String line = "hello world ; how are you ;"
比如你好,世界,和;
但是当代码看起来像:
String line2 = "hello world; how are you;"
我创建了诸如世界之类的代币; 和你; 实际上,我希望分号成为它自己的标记。 预先感谢您的帮助
可以使用单词边界分割第二行并使用过滤器删除空白行:
String line2 = "hello world; how are you;";
String[] arr = Arrays.stream(line2.split("\\b"))
.filter(s -> !s.matches("\\s+"))
.toArray(String[]::new);
System.out.println(Arrays.toString(arr));
Output:
[hello, world, ; , how, are, you, ;]
另一种选择可能是使用匹配的子字符串而不是按分隔符拆分。 匹配的正则表达式可以是:
\w+|\S+
- 至少一个单词字符[0-9A-Za-z_]
或至少一个非空格字符:
String[] arr2 = Pattern.compile("\\w+|\\S+")
.matcher(line2)
.results()
.map(mr -> mr.group(0))
.toArray(String[]::new);
结果是一样的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.