ArrayList<String>
나는 문자열을 기준으로 올바른 색인을 찾기 위해 반복합니다. 기본적으로 문자열이 주어지면 프로그램은 목록을 검색하여 전체 단어가 일치하는 색인을 찾아야합니다. 예를 들면 :Java에서 문자열의 전체 단어 일치
ArrayList<String> foo = new ArrayList<String>();
foo.add("AAAB_11232016.txt");
foo.add("BBB_12252016.txt");
foo.add("AAA_09212017.txt");
내가 문자열 AAA
을 제공 그렇다면, 내가 인덱스 2
(마지막)을 다시 받아야합니다. 그래서 색인 0
을 돌려 줄 수 있으므로 메소드를 사용할 수 없습니다.
이 코드로 시도 :
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;
}
}
불행하게도,이 코드는 결코 루프 내부의 if
문에 도달하지 않습니다. 내가 뭘 잘못하고 있는지 모르겠다.
참고 : AAA_0921
, 전체 이름이 AAA_09212017.txt
이거나 고유 한 문자열 부분을 검색 한 경우에도 작동해야합니다. 단어 경계는 단어 문자 사이에 일치하고 여기
String pattern = "(?<=_|\\b)" + str + "(?=_|\\b)";
필요 강조하지 않기 때문에
이'_' 단어로 간주됩니다 참조하십시오 .. – rock321987
오, 난 몰랐어. 다른 표현을 살펴 보겠습니다. – syy
'return i;'를 의미하지 않습니까? – 4castle