从段落中删除句子

时间:2014-09-16 23:06:35

标签: java string substring text-segmentation

我正在尝试编写代码以从段落中删除整个句子。这个句子并不重要,但它至少需要一个。

    String edit = "The cow goes moo. The cow goes boo. The cow goes roo. The cow goes jew.";
    int sentencestart = (edit.substring(edit.length()/2).indexOf('.') + edit.length()/2);
    int sentenceend = edit.substring(sentencestart).indexOf('.') + sentencestart;
    edit = edit.substring(0, sentencestart) + edit.substring(sentenceend);
    System.out.println(edit);

这是我目前的代码。它目前正在打印与我开始时完全相同的字符串。有人有什么想法吗?

编辑:我错误地暗示应删除任何句子。我的意思是除了第一句之外的任何句子。优选地,要删除的句子将落在字符串中间的某处,并且实际应用程序将用于非常大的字符串中。

3 个答案:

答案 0 :(得分:1)

为什么不按.拆分并获得所需的行,如

string edit = "The cow goes moo. The cow goes boo. The cow goes roo. The cow goes jew.";
return edit.Substring(edit.Split('.')[0].Length + 1,edit.Length - edit.Split('.')[0].Length - 1);

输出:The cow goes boo. The cow goes roo. The cow goes jew.

免责声明:上面的代码采用C#语法,而不是Java,但希望在Java中完成同样的修改。

答案 1 :(得分:1)

只是需要机会判刑         int sentenceend = edit.substring(sentencestart + 1).indexOf('。')+ sentencestart;

我以为我曾尝试过,但显然不是

答案 2 :(得分:1)

通过'。'拆分输入。字符。然后循环遍历片段,将它们全部添加回去,但跳过第二句话。

这样的事情:

  public static void main(String args[]) {
    String paragraph = "Hello. This is a paragraph. Foo bar. Bar foo.";
    String result = "";
    int i = 0;
    for (String s : paragraph.split("\\.")) {
      if (i++ == 1) continue;
      result += s+".";
    }
    System.out.println(result);
  }

结果:

Hello. Foo bar. Bar foo.