Преобразование длинного предложения в короткое при нахождении определенного слова в Java

#java #text #split

#java #текст #разбиение

Вопрос:

Приветствую всех;

У меня есть LinkedList типа String, который содержит некоторые слова, такие как [from, to, in, then, однако], и у меня есть текстовый файл, содержащий длинные предложения. что я хочу сделать, так это разбить эти предложения на более короткие предложения при нахождении одного из приведенных выше слов.

что я делал до сих пор, так это создал связанный список, содержащий слова, и другой связанный список, содержащий длинные предложения в файле. Я не знаю, как разделить длинное предложение?

Я пробовал это:

 int indexofsw = 0;
       for (int k = 0; k < LongSentence.size(); k  ) {
                for (int j = 0; j < SWords.size(); j  ) {
                    if (LongSentence.get(k).contains(SWords.get(j))== true) {
                        indexofsw = LongSentence.get(k).indexOf(SWords.get(j));
                        System.out.println(LongSentence.get(k).substring(k,indexofsw));
                        break;

                    }
                }
            }
  

но это не возвращает более короткое предложение.

Пожалуйста, есть идеи?

Комментарии:

1. У String действительно есть split метод.

Ответ №1:

test.java для начала:

 public class test{
  public static void main(String[] args){
    String[] splitWords = {"to", "in", "from", "then"};
    String str = "this from that";
    String[] tmp;
    for (String splitTkn : splitWords){
      tmp = str.split(splitTkn);
      if (tmp.length > 1){
        System.out.println(tmp[0].trim());
        System.out.println(tmp[1].trim());
      }
    }
  }
}
  

вывод:

 this
that
  

Комментарии:

1. что, если я захочу выполнить итерацию по всему списку слов [from, to, in, then, однако] Я пробовал это, но это дает исключение ` String[] temp = null; for (int k = 0; k < LongSentence.size(); k ) { for (int j = 0; j < SWords.size(); j ) { temp = LongSentence.get(k).split(SWords.get(j)) ; System.out.println(temp[k].trim()); } }`

Ответ №2:

Вы имеете в виду like?

 Set<String> wordsToRemove =
String sentence =
List<String> words = Arrays.asList(sentence.split(" "));
words.removeAll(wordsToRemove);
  

Комментарии:

1. спасибо за ответ, но я имею в виду разбиение на каждое слово в списке, а не на пробел.

Ответ №3:

Попробуйте использовать replace:

 public class test {
  public static void main(String[] args){
    String[] splitWords = {"to", "in", "from", "then"};
    String string = "this from that";
    for (String splitWord : splitWords) {
      string = string.replace(" "   splitWord   " ", System.getProperty("line.separator"));
    }
    System.out.println(string);
  }
}
  

вывод:

 this
that