compare with soundex
This commit is contained in:
parent
2564d1b8fa
commit
a6287e1760
@ -53,10 +53,10 @@ class SttDialog : DialogFragment() {
|
||||
partialResultsTextView?.text = result
|
||||
pattern?.apply{
|
||||
val matcher = matcher(result)
|
||||
if (matcher.matches()) {
|
||||
if (matcher.find()) {
|
||||
val foundName = matcher.group(1)
|
||||
for (player in players) {
|
||||
if (foundName.equals(player.name, ignoreCase=true)) {
|
||||
if (soundex(foundName) == soundex(player.name)) {
|
||||
dismiss()
|
||||
updateScore(player)
|
||||
updateUI()
|
||||
|
65
app/src/main/java/adrienmalin/pingpoints/soundex.kt
Normal file
65
app/src/main/java/adrienmalin/pingpoints/soundex.kt
Normal file
@ -0,0 +1,65 @@
|
||||
package adrienmalin.pingpoints
|
||||
|
||||
import java.util.regex.*
|
||||
|
||||
val yNotPrecededByA:Pattern = Pattern.compile("(?<!A)Y")
|
||||
val hNotPrecededByCS: Pattern = Pattern.compile("(?<![CS])H")
|
||||
val aInWord: Pattern = Pattern.compile("(?<!\\b)A")
|
||||
val silentEndLetter = Pattern.compile("[ADST](?=\\b)")
|
||||
val notALetter = Pattern.compile("\\W")
|
||||
val doubleLetter = Pattern.compile("(\\w)\\1+(?!\\1)")
|
||||
|
||||
fun soundex(string: String): String {
|
||||
var s = string
|
||||
.trim()
|
||||
.toUpperCase()
|
||||
.replace('Â', 'A')
|
||||
.replace('Ä', 'A')
|
||||
.replace('À', 'A')
|
||||
.replace('E', 'A')
|
||||
.replace('È', 'A')
|
||||
.replace('É', 'A')
|
||||
.replace('Ê', 'A')
|
||||
.replace('Ë', 'A')
|
||||
.replace('Œ', 'A')
|
||||
.replace('I', 'A')
|
||||
.replace('Î', 'A')
|
||||
.replace('Ï', 'A')
|
||||
.replace('O', 'A')
|
||||
.replace('Ô', 'A')
|
||||
.replace('Ö', 'A')
|
||||
.replace('U', 'A')
|
||||
.replace('Ù', 'A')
|
||||
.replace('Û', 'A')
|
||||
.replace('Ü', 'A')
|
||||
.replace('Ç', 'S')
|
||||
.replace("GUI", "KI")
|
||||
.replace("GUE", "KE")
|
||||
.replace("GA", "KA")
|
||||
.replace("GO", "KO")
|
||||
.replace("GU", "K")
|
||||
.replace("CA", "KA")
|
||||
.replace("CO", "KO")
|
||||
.replace("CU", "KU")
|
||||
.replace("Q", "K")
|
||||
.replace("CC", "K")
|
||||
.replace("CK", "K")
|
||||
.replace("MAC", "MCC")
|
||||
.replace("ASA", "AZA")
|
||||
.replace("KN", "NN")
|
||||
.replace("PF", "FF")
|
||||
.replace("SCH", "SSS")
|
||||
.replace("PH", "FF")
|
||||
.replace("H", "")
|
||||
|
||||
s = yNotPrecededByA.matcher(s).replaceAll("")
|
||||
s = hNotPrecededByCS.matcher(s).replaceAll("")
|
||||
s = silentEndLetter.matcher(s).replaceAll("")
|
||||
s = silentEndLetter.matcher(s).replaceAll("")
|
||||
s = notALetter.matcher(s).replaceAll("")
|
||||
s = aInWord.matcher(s).replaceAll("")
|
||||
s = doubleLetter.matcher(s).replaceAll("$1")
|
||||
|
||||
return s
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user