Mam ArrayList<String>
, który sprawdzam, aby znaleźć poprawny indeks z podanym łańcuchem. Zasadniczo, biorąc pod uwagę String, program powinien przeszukać listę i znaleźć indeks, w którym pasuje całe słowo. Na przykład:Java dopasowuje całe słowo w łańcuchu
ArrayList<String> foo = new ArrayList<String>();
foo.add("AAAB_11232016.txt");
foo.add("BBB_12252016.txt");
foo.add("AAA_09212017.txt");
Więc jeśli dam String AAA
, powinienem wrócić indeks 2
(ostatni). Więc nie mogę użyć metody , ponieważ dałoby mi to powrót do indeksu 0
.
Próbowałem z tym kodem:
String str = "AAA";
String pattern = "\\b" + str + "\\b";
Pattern p = Pattern.compile(pattern);
for(int i = 0; i < foo.size(); i++) {
// Check each entry of list to find the correct value
Matcher match = p.matcher(foo.get(i));
if(match.find() == true) {
return i;
}
}
Niestety, nigdy nie osiągnie tego kodu instrukcji wewnątrz pętli if
. Nie jestem pewien, co robię źle.
Uwaga: Powinno to również działać, gdy szukałem AAA_0921
, pełnej nazwy AAA_09212017.txt
lub dowolnej części String, która jest dla niego unikalna.
'_' jest uważana za słowo character..so przyzwyczajenie działać jako granicy słowa .. – rock321987
Ooh, ja nie wiedziałem o tym. Zajrzę do innego wyrażenia. – syy
Nie masz na myśli 'return i;'? – 4castle