Ok, also sagen wir, ich habe ein benutzerdefiniertes Objekt für Vokabeln, alternative Schreibweise und ihre Bedeutung.Finden Sie Übereinstimmung in Array für gegebene Zeichenfolge?
class VocabEntry {
var kanji:String?
var kana:String?
var meaning:String?
}
Dann habe ich ein Array, bestehend aus diesen Objekten. Hier ist zum Beispiel ein.
let newVocabWord = VocabEntry()
newVocabWord.kanji = "下さい”
newVocabWord.kana = "ください”
newVocabWord.meaning = "please"
Jetzt habe ich einen Text-String:
let testString = "すみません、十階のボタンを押して下さい"
Wie kann ich diese Zeichenfolge meiner Reihe von benutzerdefinierten Objekten zu vergleichen, und verweisen auf die Ergebnisse (die Strings enthalten)?
Ich versuchte es.
if vocabArray.contains({ $0.kanji == testString }) {
print("yes")
}
Aber das versucht, die gesamte Zeichenfolge übereinstimmen. Wenn ich testString
zu "下 さ い" ändere, funktioniert es, aber das ist nicht das, wonach ich suche. Was ich will ist, dass es sagt "Hier habe ich い さ い in xx Objekt gefunden. Hier ist die Indexnummer."
Funktioniert wie ein Charme! Vielen Dank. –
Eigentlich funktioniert das aber nur für ein einziges Spiel. In Wirklichkeit hat mein vocabArray etwa 1400 Einträge. Für eine gegebene Eingabe-Zeichenkette sollte es um des Arguments willen Übereinstimmungen bei den Indizes 3, 252, 563, 1304, usw. geben. Aber dies hört auf, nachdem es die erste gefunden hat. Wie würden Sie fortfahren, indem Sie für jedes gefundene Match Indizes zu einem Array hinzufügen? –
@JosephToronto: Ich habe eine mögliche Lösung hinzugefügt. –