Java中的拆分段:希望在特定的字地址编号后存储段落

时间:2011-09-26 21:56:12

标签: java

我需要逻辑,例如我有

String explanation = "The image-search feature will start rolling out in the next few days, said Johanna Wright, a Google search director. \"Every picture has a story, and we want to help you discover that story,\" she said.";

单词总数为300。

现在我希望单词数字150后的所有字符串都在一个单独的字符串中。 所以,请你给我逻辑

4 个答案:

答案 0 :(得分:1)

让你尝试过......

explanation.substring(beginIndex, endIndex)

答案 1 :(得分:0)

有三件事非常有用。

第一种是String.split(String)方法。它是在Java 6中引入的。它通过传递正则表达式并根据该正则表达式将字符串拆分为标记来工作。

第二个是正则表达式“\ s *”,它在所有空格上分开。

第三个是StringBuilder,它允许你从其他字符串构建字符串而不会有大量的重建惩罚。

所以,首先我们需要获得单词。我们可以使用我们的空白正则表达式的split方法来做到这一点。

String[] words = String.split("\\s*");

从那里开始,计算前150个单词应该是相当微不足道的。您可以使用从150开始并从那里向上移动的for循环。

String sentence = "";
for(int i = 150; i < words.length; i++) {
    sentence = sentence + words[i] + " ";
}

但这非常昂贵,因为它重建了很多字符串。我们可以通过这样做来改善它

StringBuilder sentence = "";
for(int i = 150; i < words.length; i++) {
    sentence.append(words[i]).append(" ");
}

但总而言之,你可以根据需要格式化你的句子。 (请注意最后的额外空间!)

答案 2 :(得分:0)

一种方法是explanation.replaceFirst("(\\S+\\s*){0,150}", "")

答案 3 :(得分:0)

您可以使用正则表达式迭代单词,例如

Pattern regex = Pattern.compile("\\b\\w");
Matcher regexMatcher = regex.matcher(context);
while (regexMatcher.find()) {
        // if regexMatcher.groupCount()%150 == 0 then build the next string list
}