Thomas Darimont
Erfahrenes Mitglied
Hallo,
... geht mit Sicherheit noch viel eleganter mit Scala...
Gruß Tom
Java:
package de.tutorials.contest
import scala.io._
object FuzzySearch {
def main(args:Array[String]):Unit={
var query =
"oooo"
//"George Bush"
//"JFK"
for(item <- Source.fromFile("c:/temp/presidents.txt").getLines){
var partialMatches = matchWith(query.replace(" ",""),item)
if(partialMatches != null){
var mutableItem = new StringBuilder(item)
partialMatches.foreach(m => {
mutableItem.insert(m(1),'>')
mutableItem.insert(m(0),'<')
}
)
println(mutableItem)
}
}
}
def matchWith(query: String, item: String) : List[Array[int]] = {
var partialMatches = List[Array[int]]();
var offset = -1
for(queryChar <- query){
offset = item.indexOf(queryChar,offset+1)
if(offset == -1){
return null;
}
if ( partialMatches.isEmpty || partialMatches.first(1) != offset){
partialMatches = Array(offset,offset + 1)::partialMatches
}else{
partialMatches.first(1)=partialMatches.first(1)+1
}
}
return partialMatches;
}
}
Gruß Tom