/ / Java - Si le mot se termine par des délimiteurs saisis par l'utilisateur, effectuez x - java, tableaux, regex, chaîne, délimiteur

Java - Si le mot se termine par des délimiteurs entrés par l'utilisateur, faites x - java, tableaux, regex, string, délimiteur

Je suis nouveau sur Java et j'écris actuellement unprogramme qui prend des arguments entrés en utilisation pour les délimiteurs d’un fichier texte contenant des phrases, puis détermine le nombre de phrases de ce fichier texte en fonction des délimiteurs fournis.

Lors de l'exécution de mon fichier Main.java, je souhaite que l'utilisateur puisse effectuer les opérations suivantes (où -d est l'indicateur de délimiteur et les caractères suivants sont les délimiteurs):

java Main -d!?. ou java Main -d.?

Ou toute autre combinaison. Mes questions sont:

  1. Le meilleur moyen de stocker les délimiteurs sous forme de chaîne ou de tableau?
  2. Comment puis-je dire clairement à mon programme d'utiliser les délimiteurs transmis? Actuellement, mon programme effectue les tâches suivantes:

Vérifie si un mot se termine par l'un des délimiteurs spécifiés. Comme:

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

Mais je voudrais plutôt que ce soit quelque chose comme:

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

J'espère que cela a du sens et je peux fournir des éclaircissements supplémentaires si nécessaire. J'ai essayé de chercher mais je n'ai pas trouvé ma question précise.

Merci!

Réponses:

4 pour la réponse № 1

Le mieux est probablement d’avoir comme délimiteur un String tableau. C'est parce que la méthode endsWith utiliser un String en paramètre.

Le problème est que la version actuelle de endsWith dans la classe java.lang.String n’accepte pas un tableau de délimiteurs possibles, mais il est possible de créer un code personnalisé similaire à celui-ci:

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

Et pour l'appeler, utilisez un code comme celui-ci

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

Notez qu'il s'agit d'un code plus général que ce que vous avez demandé, car vous pouvez vérifier si la chaîne transmise se termine par des délimiteurs de plusieurs caractères.


3 pour la réponse № 2

Si votre délimiteur ne contient qu'un seul caractère, vous pouvez stocker les délimiteurs dans un répertoire. List, puis vérifiez si le dernier caractère du String est dans cette liste:

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

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

sentenceCount++;
}