我正在尝试编写代码以从段落中删除整个句子。这个句子并不重要,但它至少需要一个。
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);
这是我目前的代码。它目前正在打印与我开始时完全相同的字符串。有人有什么想法吗?
编辑:我错误地暗示应删除任何句子。我的意思是除了第一句之外的任何句子。优选地,要删除的句子将落在字符串中间的某处,并且实际应用程序将用于非常大的字符串中。答案 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.