293 votes

Comment puis-je vérifier si un caractère apparaît dans une chaîne ?

En Java, y a-t-il un moyen de vérifier l’État :

« Ce caractère unique apparaisse tout en chaîne x »

sans utiliser une boucle ?

366voto

mP. Points 7516

Vous pouvez utiliser `` .

168voto

Zach Scrivena Points 15052
  • String.contains() qui vérifie si la chaîne contient une séquence donnée de char valeurs
  • String.indexOf() qui renvoie l'index dans la chaîne de la première occurence du caractère spécifié ou une sous-chaîne (il y a 4 variantes de cette méthode)

39voto

Jack Leow Points 11081

Je ne suis pas sûr de ce que l'affiche originale est poser exactement. Depuis indexOf(...) et(...) les deux probablement utiliser des boucles à l'interne, peut-être qu'il est à la recherche pour voir si cela est possible sans une boucle? Je pense à deux voies off à la main, on pourrait bien sûr être recurrsion:

public boolean containsChar(String s, char search) {
    if (s.length() == 0)
        return false;
    else
        return s.charAt(0) == search || containsChar(s.substring(1), search);
}

L'autre est beaucoup moins élégant, mais à l'exhaustivité...:

/**
 * Works for strings of up to 5 characters
 */
public boolean containsChar(String s, char search) {
    if (s.length() > 5) throw IllegalArgumentException();

    try {
        if (s.charAt(0) == search) return true;
        if (s.charAt(1) == search) return true;
        if (s.charAt(2) == search) return true;
        if (s.charAt(3) == search) return true;
        if (s.charAt(4) == search) return true;
    } catch (IndexOutOfBoundsException e) {
        // this should never happen...
        return false;
    }
    return false;
}

Le nombre de lignes de croître que vous avez besoin de soutien de plus en plus longues chaînes de cours. Mais il n'y a pas de boucles/recurrsions à tous. Vous pouvez même supprimer la longueur de vérifier si vous êtes concernés par le fait que la longueur() utilise une boucle.

12voto

Richard Points 21
String temp = "abcdefghi";
if(temp.indexOf("b")!=-1)
{
   System.out.println("there is 'b' in temp string");
}
else
{
   System.out.println("there is no 'b' in temp string");
}

4voto

mweiss Points 585

Pour vérifier si quelque chose n’existe pas dans une chaîne, vous devez au moins regarder chaque caractère dans une chaîne. Donc même si vous n’utilisez pas explicitement une boucle, il va avoir la même efficacité. Cela étant dit, vous pouvez essayer d’utiliser str.contains(""+char).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X