java - java中遇到连字符时分割句子

标签 java regex string split

我的程序中有以下代码。当遇到连字符时,它会分割一行,并将每个单词存储在字符串数组“标记”中。但我希望在句子中遇到连字符时也将其存储在字符串数组“标记”中。

String[] tokens = line.split("-");

上面的代码分割了句子,但也完全忽略了结果数组中的连字符。 我可以做什么来将连字符也存储在结果数组中?

最佳答案

编辑:-

似乎您想在空格连字符上进行拆分,但仅在数组中保留连字符(正如,我从您的这一行推断 - 将每个单词存储在字符串数组中),您可以使用以下内容:-

String[] tokens = "abc this is-a hyphen def".split("((?<=-)|(?=-))|\\s+");
System.out.println(Arrays.toString(tokens));

输出:-

[abc, this, is, -, a, hyphen, def]
<小时/>

要处理连字符前后的空格,您可以首先使用replaceAll方法修剪这些空格,然后进行拆分:-

"abc this is - a hyphen def".replaceAll("[ ]*-[ ]*", "-")
                            .split("((?<=-)|(?=-))|\\s+");
<小时/>

上一个答案:-

你可以使用这个:-

String[] tokens = "abc-efg".split("((?<=-)|(?=-))");
System.out.println(Arrays.toString(tokens));

输出:-

[abc, -, efg]

它会在连字符 (-) 前后的一个字符处进行拆分。

关于java - java中遇到连字符时分割句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601718/

相关文章:

java - 从 ShutdownHook 访问 AWT

javascript - .match() 和正则表达式的意外输出

python - 匹配 Python 中的特定字符串,除非缺少给定模式

java - 多个字符串方法链接在单个代码中

string - 压缩后如何创建 X 大小的字符串?

java - 使用@PathVariable时如何使用spring boot和thymeleaf在首页导入静态资源

java - 如何获取设备的 GPS 详细信息

java - Saxon:无法使用 XSLT 中的 xs:string 参数调用需要字符串的静态方法

regex - 使用 grep 仅匹配一行中的模式一次

php - 如何检测哪种类型的中文编码有文本文件?