Sto cercando di trovare tutte le occorrenze di una sottostringa in una stringa in Java.Trova tutte le occorrenze della sottostringa nella stringa in Java
Ad esempio: cercando "ababsdfasdfhelloasdf" "asdf" restituirebbe [8,17] poiché ci sono 2 "asdf" s ', uno alla posizione 8 e uno a 17. Searching "aaaaaa" per "aa "restituirebbe [0,1,2,3,4] perché c'è un "aa" alle posizioni 0,1,2,3 e 4.
ho provato questo:
public List<Integer> findSubstrings(String inwords, String inword) {
String copyOfWords = inwords;
List<Integer> indicesOfWord = new ArrayList<Integer>();
int currentStartIndex = niwords.indexOf(inword);
int indexat = 0;
System.out.println(currentStartIndex);
while (cthing1 > 0) {
indicesOfWord.add(currentStartIndex+indexat);
System.out.println(currentStartIndex);
System.out.println(indicesOfWord);
indexat += cthing1;
copyOfWords = copyOfWords.substring(cthing1);
System.out.println(copyOfWords);
cthing1 = copyOfWords.indexOf(inword);
}
questo il problema può essere risolto in Python come segue:
indices = [m.start() for m in re.finditer(word, a.lower())]
dove "parola" è la parola che sto cercando e "a" è la stringa che sto cercando.
Come posso ottenere questo in Java?
penso che l'alberino superiore [qui] (http://stackoverflow.com/questions/767759/occurrences-of-substring-in-a-string) può aiutare. Per ottenere gli indici, basta stampare o salvare il 'lastIndex' mentre li ricevi. –
Vuoi dire che hai bisogno [di qualcosa di simile] (http://ideone.com/9IeCEQ)? –
Utilizzare nomi di variabili più significativi. È difficile capire cosa significhi 'cthing1' o' outthing' o 'niwords'. Usare cose come 'lastIndex',' indexList', ecc. Renderà più facile capire cosa hai scritto e correggerlo. – RealSkeptic