String match = "hello";
String text = "0123456789hello0123456789";
int position = getPosition(match, text); // should be 10, is there such a method?
답변
이를 수행하는 방법은 다음과 같습니다.
지정된 문자열에서 지정된 문자열 ( 처음 색인에서 시작하여 앞뒤로 검색) 의 첫 번째 ( 또는 마지막 ) 어커런스 의이 문자열 내에서 인덱스를 리턴합니다 .
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"
답변
이것은 정규식을 사용하여 작동합니다.
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));
}
출력 :
인덱스 2-5에서 ‘사랑’을 찾았습니다
일반 규칙 :
- 정규식 검색은 왼쪽에서 오른쪽으로 이루어지며 일치하는 문자를 사용한 후에는 재사용 할 수 없습니다.
답변
답변
단일 인덱스 찾기
다른 사람들이 말했듯 text.indexOf(match)
이 단일 일치 항목을 찾는 데 사용하십시오 .
String text = "0123456789hello0123456789";
String match = "hello";
int position = text.indexOf(match); // position = 10
여러 인덱스 찾기
코드 유지 관리 성에 대한 @StephenC 의 의견 과 @polygenelubricants의 답변 을 이해하는 데 어려움이 있기 때문에 텍스트 문자열에서 일치하는 모든 인덱스를 얻는 다른 방법을 찾고 싶었습니다. 다음 코드 ( 이 답변 에서 수정 됨 )가 그렇게합니다.
String text = "0123hello9012hello8901hello7890";
String match = "hello";
int index = text.indexOf(match);
int matchLength = match.length();
while (index >= 0) { // indexOf returns -1 if no match found
System.out.println(index);
index = text.indexOf(match, index + matchLength);
}
답변
string.indexOf를 사용하여 시작 색인을 가져 오십시오.
답변
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);
}
}
답변
int match_position=text.indexOf(match);