разделите предложение на слова и знаки препинания
Мне нужно разобрать классSentence
в слово и пунктуацию (пробел рассматривается как знак пунктуации), затем добавьте все это в общем.ArrayList
Пример предложения:
Человек, план, канал - Панама!
A => слово
whitespase => пунктуация
человек => слово
, + пробел => пунктуация
а => слово
[...]
Я пытался прочитать все это предложение по одному символу за раз и собрать то же самое и создать новое слово или новоеPunctuation
из этой коллекции.
Вот'мой код:
public class Sentence {
private String sentence;
private LinkedList elements;
/**
* Constructs a sentence.
* @param aText a string containing all characters of the sentence
*/
public Sentence(String aText) {
sentence = aText.trim();
splitSentence();
}
public String getSentence() {
return sentence;
}
public LinkedList getElements() {
return elements;
}
/**
* Split sentance into words and punctuations
*/
private void splitSentence() {
if (sentence == "" || sentence == null || sentence == "\n") {
return;
}
StringBuilder builder = new StringBuilder();
int j = 0;
boolean mark = false;
while (j < sentence.length()) {
//char current = sentence.charAt(j);
while (Character.isLetter(sentence.charAt(j))) {
if (mark) {
elements.add(new Punctuation(builder.toString()));
builder.setLength(0);
mark = false;
}
builder.append(sentence.charAt(j));
j++;
}
mark = true;
while (!Character.isLetter(sentence.charAt(j))) {
if (mark) {
elements.add(new Word(builder.toString()));
builder.setLength(0);
mark = false;
}
builder.append(sentence.charAt(j));
j++;
}
mark = true;
}
}
Но логика splitSentence () нене работает правильно. И я могу'т, чтобы найти правильное решение для этого.
Я хочу реализовать это, когда мы читаем первый символ => добавить к строителю => пока следующий элемент не будет того же типа (буква или пунктуация), продолжайте добавлять в строитель => когда следующий элемент отличается от содержимого builder => создайте новое слово или пунктуацию и установите строитель для запуска.
Сделайте ту же логику снова.
Как правильно реализовать эту логику проверки?