#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