繁体   English   中英

标记字符串中的特殊字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM