150 votes

Java : méthode pour obtenir la position d'une correspondance dans une chaîne ?

String match = "hello";
String text = "0123456789hello0123456789";

int position = getPosition(match, text); // should be 10, is there such a method?

49voto

Aldwane Viegan Points 481

Cela fonctionne en utilisant regex.

String text = "I love you so much";
String wordToFind = "love";
Pattern word = Pattern.compile(wordToFind);
Matcher match = word.matcher(text);

while (match.find()) {
     System.out.println("Found love at index "+ match.start() +" - "+ (match.end()-1));
}

Sortie :

Trouvé 'amour' à l'index 2 - 5

Règle générale :

  • Recherche Regex de gauche à droite, et une fois que les caractères correspondants ont été utilisés, ils ne peuvent pas être réutilisés.

20voto

Michael Mrozek Points 44120
text.indexOf(match);

Voir le javadoc String

2voto

hhh Points 4665

Vous pouvez obtenir toutes les correspondances dans un fichier simplement en attribuant à l'intérieur while-loop, cool :

$ javac MatchTest.java 
$ java MatchTest 
1
16
31
46
$ cat MatchTest.java 
import java.util.*;
import java.io.*;

public class MatchTest {
    public static void main(String[] args){
        String match = "hello";
        String text = "hello0123456789hello0123456789hello1234567890hello3423243423232";
        int i =0;
        while((i=(text.indexOf(match,i)+1))>0)
            System.out.println(i);
    }
}

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