我有一串单词如下:
String words = "disaster kill people action scary seriously world murder loose world";
现在,我希望将每两个单词分开并将它们存储到一个列表中,以便它可以产生类似的内容:
[disaster kill, people action, scary seriously,...]
我的代码的问题是它会在遇到空格时分裂。如何修改它,以便只有在遇到每个第二个空格时才会将其添加到列表中,保留每个单词后面的空格)
我的代码:
ArrayList<String> wordArrayList = new ArrayList<String>();
for(String word : joined.split(" ")) {
wordArrayList.add(word);
}
感谢。
答案 0 :(得分:2)
使用此正则表达式:(?<!\\G\\S+)\\s
。
<强> PROOF:强>
String words = "disaster kill people action scary seriously world murder loose world";
String[] result = words.split("(?<!\\G\\S+)\\s");
System.out.printf("%s%n", Arrays.toString(result));
结果:
[disaster kill, people action, scary seriously, world murder, loose world]
答案 1 :(得分:1)
你的循环应该留下一个ArrayList<String>
,每个单词,对吗?您现在需要做的就是遍历该列表并将两个单词组合在一起。
ArrayList<String> finalList = new ArrayList<String>();
for (int i = 0; i < wordArrayList.Size(); i+=2) {
if (i + 1 < wordArrayList.Size()
finalList.add(wordArrayList.get(i) + " " + wordArrayList.get(i + 1);
}
这应该取你的分词并将它们添加到带有空格的列表中,以便它们看起来像你想要的输出。
答案 2 :(得分:0)
我正在寻找在&#39; n&#39;之后拆分字符串。话。 所以我修改了上面的解决方案。
private void spiltParagraph(int splitAfterWords, String someLargeText) {
String[] para = someLargeText.split(" ");
ArrayList<String> data = new ArrayList<>();
for (int i = 0; i < para.length; i += splitAfterWords) {
if (i + (splitAfterWords - 1) < para.length) {
StringBuilder compiledString = new StringBuilder();
for (int f = i; f <= i + (splitAfterWords - 1); f++) {
compiledString.append(para[f] + " ");
}
data.add(compiledString.toString());
}
}
}