String match = "hello";
String text = "0123456789hello0123456789";
int position = getPosition(match, text); // should be 10, is there such a method?
138
La famille de méthodes qui fait cela est:
Renvoie l'index dans cette chaîne de la première ( ou dernière ) occurrence de la sous-chaîne spécifiée [recherche vers l'avant ( ou vers l'arrière ) à partir de l'index spécifié].
String text = "0123hello9012hello8901hello7890";
String word = "hello";
System.out.println(text.indexOf(word)); // prints "4"
System.out.println(text.lastIndexOf(word)); // prints "22"
// find all occurrences forward
for (int i = -1; (i = text.indexOf(word, i + 1)) != -1; i++) {
System.out.println(i);
} // prints "4", "13", "22"
// find all occurrences backward
for (int i = text.length(); (i = text.lastIndexOf(word, i - 1)) != -1; i++) {
System.out.println(i);
} // prints "22", "13", "4"
Cela fonctionne en utilisant regex.
Production :
Règle générale :
la source
Voir le javadoc String
la source
Recherche d'un seul index
Comme d'autres l'ont dit, utilisez
text.indexOf(match)
pour trouver une seule correspondance.Recherche de plusieurs index
En raison du commentaire de @ StephenC sur la maintenabilité du code et de ma propre difficulté à comprendre la réponse de @polygenelubricants , je voulais trouver un autre moyen d'obtenir tous les index d'une correspondance dans une chaîne de texte. Le code suivant (qui est modifié à partir de cette réponse ) le fait:
la source
Utilisez string.indexOf pour obtenir l'index de départ.
la source
Vous pouvez obtenir toutes les correspondances dans un fichier simplement en affectant à l'intérieur de la boucle while, cool:
la source
i
par+1
fonctionne, mais de manière plutôt détournée. Comme vous l'avez montré ici, il rapporte le premierhello
ài == 1
. C'est beaucoup plus cohérent si vous utilisez toujours l'indexation basée sur 0.la source
la source
J'ai du gros code mais ça marche bien ...
la source
la source
la source
Si vous envisagez de rechercher des correspondances «n» de la chaîne de recherche, je vous recommande d'utiliser des expressions régulières . Ils ont une courbe d'apprentissage abrupte, mais ils vous feront gagner des heures lorsqu'il s'agit de recherches complexes.
la source
pour les occurrences multiples et le caractère trouvé dans la chaîne ?? oui ou non
la source
la source