String match = "hello";
String text = "0123456789hello0123456789";
int position = getPosition(match, text); // should be 10, is there such a method?
138
Rodzina metod, która to robi, to:
Zwraca indeks pierwszego ( lub ostatniego ) wystąpienia określonego podciągu w tym ciągu [wyszukiwanie w przód ( lub wstecz ) począwszy od określonego indeksu].
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"
Działa to przy użyciu wyrażenia regularnego.
Wynik :
Główna zasada :
źródło
Zobacz String javadoc
źródło
Znalezienie jednego indeksu
Jak powiedzieli inni, użyj,
text.indexOf(match)
aby znaleźć pojedyncze dopasowanie.Znajdowanie wielu indeksów
Z powodu komentarza @ StephenC dotyczącego możliwości utrzymania kodu i moich własnych trudności ze zrozumieniem odpowiedzi @polygenelubricants , chciałem znaleźć inny sposób na uzyskanie wszystkich indeksów dopasowania w ciągu tekstowym. Robi to następujący kod (zmodyfikowany na podstawie tej odpowiedzi ):
źródło
Użyj string.indexOf, aby uzyskać indeks początkowy.
źródło
Możesz uzyskać wszystkie dopasowania w pliku, po prostu przypisując wewnętrzną pętlę while, fajne:
źródło
i
przez+1
prace, ale w dość okrężną drogą. Jak pokazałeś tutaj, zgłasza pierwszyhello
oi == 1
. O wiele bardziej spójne jest, jeśli zawsze używasz indeksowania opartego na 0.źródło
źródło
Mam duży kod, ale działa dobrze ....
źródło
źródło
źródło
Jeśli masz zamiar szukać „n” dopasowań szukanego ciągu, polecam użycie wyrażeń regularnych . Mają stromą krzywą uczenia się, ale pozwolą Ci zaoszczędzić godziny, jeśli chodzi o złożone wyszukiwania.
źródło
dla wielu wystąpień i znak znaleziony w ciągu ?? tak lub nie
źródło
źródło