Java 合并共享单词链接的行
所以我在java中遇到了一个小问题。我有点像Java 合并共享单词链接的行,java,arrays,string,Java,Arrays,String,所以我在java中遇到了一个小问题。我有点像 "Victor Fleming" "Gone With" "With The" "The Wind." 所以这个句子实际上应该是这样的 "Victor Fleming" "Gone with the wind." 因此,我希望通过相邻和相同的单词形成一个单独的句子。如果没有检测到相邻的相同单词,那么句子将被分开,如“
"Victor Fleming"
"Gone With"
"With The"
"The Wind."
所以这个句子实际上应该是这样的
"Victor Fleming"
"Gone with the wind."
因此,我希望通过相邻和相同的单词形成一个单独的句子。如果没有检测到相邻的相同单词,那么句子将被分开,如“Victor Fleming”案例中的情况,其中Fleming与Gone不同,因此新句子开始。到目前为止,我写的是:
List separatedText=new ArrayList();
int i=0;
而(i
我们可以将句子存储在字符串数组中,然后循环遍历每个句子
在循环中,我们检查最后一个项目的最后一个字(通过使用.split(“”
)将其拆分为一个数组,然后获取最后一个元素)是否等于当前项目的第一个字。如果是,我们首先删除当前项的第一个单词,然后将其附加到StringBuilder
中
如果不是,则将StringBuilder的值追加到列表中,追加当前元素,然后继续
String[] sentences = {"Victor Fleming", "Gone With", "With The", "The Wind."};
List<String> newsentences = new ArrayList<>();
StringBuilder str = new StringBuilder();
for(int i = 0; i < sentences.length; i++) {
String cur = sentences[i];
if(i != 0) {
String[] a = sentences[i-1].split(" ");
String[] b = cur.split(" ");
String last = a[a.length-1];
String first = b[0];
if(last.equalsIgnoreCase(first)) {
str.append(cur.substring(first.length()));
}else {
newsentences.add(str.toString());
str = new StringBuilder();
str.append(cur);
}
}else {
str.append(cur);
}
}
newsentences.add(str.toString());
System.out.println(Arrays.toString(newsentences.toArray()));
你想要的行为是什么?你现在的描述太混乱了。问题:你怎么知道“维克多·弗莱明”应该作为一个“句子”放在一起?“维克多”和“弗莱明”是两个相邻的词,所以它们不应该分开吗?就像上面的例子:“维克多·弗莱明随风而去”。我想把“Victor Fleming”和“Gone with the Wind”分成两个独立的句子,因为可以看出,“Gone with the Wind”可以合并成“Gone with the Wind”,因为在一个句子中相邻的重复单词,而Victor Fleming不能。所以我想做的是得到a+1和a+2位置上的单词,看看它们是否相同。如果它们不是,那么句子将只由位置a和位置a+1上的单词组成(因为无法连续合并重复的单词)。@Code学徒我的错,我将这些单词放在单独的行上,如“Victor Fleming”“Gone With”“With the”等。我知道这一对中的第一个单词不能和第二个单词相同。然而,这对中的第二个单词可能与下一对中的第一个单词相同。当我说“我的”时,我把问题写错了bad@Simm你应该编辑问题以显示正确的输入,而不是在答案中描述它。我已按我的理解对其进行了编辑。如果我有任何误解,请随时重新编辑。
[Victor Fleming, Gone With The Wind.]