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