每2个单词后拆分字符串并存储到列表

时间:2016-05-20 14:32:52

标签: java arrays

我有一串单词如下:

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);
     }

感谢。

3 个答案:

答案 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());
            }
        }
    }