Bir metin belgen ve bir sorgum var (sorgu birden fazla sözcük olabilir). Belgedeki sorgunun tüm oluşumlarının konumunu bulmak istiyorum.Bir String'deki tüm eşleşmelerin pozisyonları nasıl alınır?
documentText.indexOf(query)
'u veya normal ifadeyi kullanmayı düşündüm ancak çalışamadım.
aşağıdaki yöntemi ile sona:
Birincisi, Sonra QueryOccurrence
public class QueryOccurrence implements Serializable{
public QueryOccurrence(){}
private int start;
private int end;
public QueryOccurrence(int nameStart,int nameEnd,String nameText){
start=nameStart;
end=nameEnd;
}
public int getStart(){
return start;
}
public int getEnd(){
return end;
}
public void SetStart(int i){
start=i;
}
public void SetEnd(int i){
end=i;
}
}
adında bir dataType oluşturmak var, şu yönteminde bu veri türü kullandık:
public static List<QueryOccurrence>FindQueryPositions(String documentText, String query){
// Normalize do the following: lower case, trim, and remove punctuation
String normalizedQuery = Normalize.Normalize(query);
String normalizedDocument = Normalize.Normalize(documentText);
String[] documentWords = normalizedDocument.split(" ");;
String[] queryArray = normalizedQuery.split(" ");
List<QueryOccurrence> foundQueries = new ArrayList();
QueryOccurrence foundQuery = new QueryOccurrence();
int index = 0;
for (String word : documentWords) {
if (word.equals(queryArray[0])){
foundQuery.SetStart(index);
}
if (word.equals(queryArray[queryArray.length-1])){
foundQuery.SetEnd(index);
if((foundQuery.End()-foundQuery.Start())+1==queryArray.length){
//add the found query to the list
foundQueries.add(foundQuery);
//flush the foundQuery variable to use it again
foundQuery= new QueryOccurrence();
}
}
index++;
}
return foundQueries;
}
Bu yöntem, her birinde belgede bulunan sorgunun tüm durumlarının bir listesini döndürür.
Bu görevi gerçekleştirmenin daha kolay ve hızlı bir yolunu önerir misiniz?
Teşekkür
Bu yardımcı olacaktır: ['String # indexOf (Dize, int)'] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#indexOf%28java. lang.String,% 20int% 29) –