Tôi đang cố tìm tất cả các lần xuất hiện của chuỗi con trong chuỗi trong Java.Tìm tất cả các lần xuất hiện của chuỗi con trong chuỗi trong Java
Ví dụ: tìm kiếm "ababsdfasdfhelloasdf" cho "asdf" sẽ quay trở lại [8,17] kể từ khi có 2 "asdf" 's, một ở vị trí 8 và một ở 17. Tìm kiếm "aaaaaa" cho "aa "sẽ quay trở lại [0,1,2,3,4] vì có một "aa" tại các vị trí 0,1,2,3, và 4.
tôi cố gắng này:
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);
}
này vấn đề có thể được giải quyết bằng Python như sau:
indices = [m.start() for m in re.finditer(word, a.lower())]
trong đó "từ" là từ tôi đang tìm kiếm và "a" là chuỗi tôi đang tìm kiếm.
Làm thế nào tôi có thể đạt được điều này trong Java?
Tôi nghĩ bài đầu [ở đây] (http://stackoverflow.com/questions/767759/occurrences-of-substring-in-a-string) có thể giúp bạn. Để nhận được các chỉ mục, chỉ cần in hoặc lưu 'lastIndex' khi bạn nhận được chúng. –
Bạn có nghĩa là bạn cần [một cái gì đó như thế này] (http://ideone.com/9IeCEQ)? –
Vui lòng sử dụng các tên biến có ý nghĩa hơn. Thật khó để hiểu ý nghĩa của 'cthing1' hoặc' outthing' hoặc 'niwords'. Sử dụng những thứ như 'lastIndex',' indexList', v.v. Hãy làm cho nó dễ hiểu hơn những gì bạn đã viết và sửa nó. – RealSkeptic