/ / Java - Ако думата завърши с въведени от потребителя разделители, тогава x - java, масиви, regex, string, delimiter

Java - Ако думата завършва с въведени от потребителя разделители, тогава правете x - java, масиви, regex, string, delimiter

Аз съм нов в Java и в момента пиша aпрограма, която използва въведени аргументи за разделители на текстов файл, съдържащ изречения, и след това определя броя на изреченията в този текстов файл въз основа на предоставените разделители.

Когато стартирам моя Main.java, искам потребителят да може да направи следното (където -d е флагът за разделител и символите след него са разделителите):

java Main -d !? или java Main -d.?

Или всяка друга комбинация. Моите въпроси са:

  1. Дали най-добрият начин да съхраните разделителите като низ или масив?
  2. Как мога да кажа на моята програма да използва разделителите, които се предават? Понастоящем програмата ми прави следното:

Проверява дали дадена дума завършва с някой от зададените разделители. Като:

 if (word.endsWith(".")  || word.endsWith("!")  || word.endsWith("?")) {
sentenceCount++
}

Но вместо това бих искал да бъде нещо като:

if (word.endsWith(delimitersStringorArray.contains())  {
sentenceCount++
}

Надявам се, че това има смисъл и ако е необходимо, мога да дам допълнителни разяснения. Опитах се да търся, но не намерих специфичния си въпрос.

Благодаря!

Отговори:

4 за отговор № 1

Вероятно най-добре е да имаме разделител a String масив. Това е защото методът endsWith използвай String като параметър.

Проблемът е, че действителната версия на краищата с класа java.lang.String не приема масив от възможни разделители, но е възможно да създадете персонализиран код, за да направите същото като следното:

public class StringUtility {
public static boolean endsWith(String str, String[] delimiters) {
for (String delimiter : delimiters) {
if (str.endsWith(delimiter)) {
return true;
}
}
return false;
}
}

И да го наречем използвайте код като следния

String[] delimiters = { ".", "!", "?" };
if (StringUtility.endsWith("yourWord", delimiters)) {
// Do something
}

Имайте предвид, че това е по-общ код, отколкото това, което сте заявили, защото можете да проверите дали предаденият низ завършва с разделители на повече от един символ.


3 за отговор № 2

Ако вашият разделител е само един символ, можете да съхраните разделителите в a List, след това проверете дали последният знак на String е в този списък:

List<Character> delimiters = new ArrayList<Character>();
delimiters.add(".");
delimiters.add("!");
delimiters.add("?");

if(delimiters.contains(word.charAt(word.length() - 1))){

sentenceCount++;
}