Gibt es eine SwiftWith () -Methode oder ähnliches in Swift?
Ich versuche im Grunde zu überprüfen, ob eine bestimmte Zeichenfolge mit einer anderen Zeichenfolge beginnt. Ich möchte auch, dass die Groß- und Kleinschreibung nicht berücksichtigt wird.
Wie Sie vielleicht sehen können, versuche ich nur, eine einfache Suchfunktion durchzuführen, aber ich scheine kläglich daran zu scheitern.
Das möchte ich:
Wenn Sie "sa" eingeben, erhalten Sie Ergebnisse für "San Antonio", "Santa Fe" usw. Wenn Sie "SA" oder "Sa" oder sogar "sA" eingeben, wird auch "San Antonio" oder "Santa Fe" zurückgegeben.
Ich habe benutzt
self.rangeOfString(find, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil
vor iOS9 und es funktionierte gut. Nach dem Upgrade auf iOS9 funktionierte es jedoch nicht mehr und bei der Suche wird zwischen Groß- und Kleinschreibung unterschieden.
var city = "San Antonio"
var searchString = "san "
if(city.rangeOfString(searchString, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil){
print("San Antonio starts with san ");
}
var myString = "Just a string with san within it"
if(myString.rangeOfString(searchString, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil){
print("I don't want this string to print bc myString does not start with san ");
}
Antworten:
verwenden
hasPrefix
stattstartsWith
.Beispiel:
quelle
"string".lowercased()
Hier ist eine Swift-Erweiterungsimplementierung von StartsWith:
Anwendungsbeispiel:
quelle
Um speziell auf die Groß- und Kleinschreibung zu achten, wird das Präfix nicht berücksichtigt:
in reinem Swift (meistens empfohlen)
oder:
Hinweis: Bei einem leeren Präfix werden
""
beide Implementierungen zurückgegebentrue
mit Foundation
range(of:options:)
Hinweis: Für ein leeres Präfix wird
""
es zurückgegebenfalse
und hässlich mit einem regulären Ausdruck sein (ich habe es gesehen ...)
Hinweis: Für ein leeres Präfix wird
""
es zurückgegebenfalse
quelle
In
func starts<PossiblePrefix>(with possiblePrefix: PossiblePrefix) -> Bool where PossiblePrefix : Sequence, String.Element == PossiblePrefix.Element
Kürze wird 4 eingeführt.Beispiel Verwendung:
quelle
Bearbeiten: aktualisiert für Swift 3.
Die Swift String-Klasse verfügt zwar über die Methode
hasPrefix()
, bei der zwischen Groß- und Kleinschreibung unterschieden wird . Wenn Sie jedoch eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung wünschen, können Sie die NSString-Methode verwendenrange(of:options:)
.Hinweis: Standardmäßig sind die NSString-Methoden nicht verfügbar, wenn Sie
import Foundation
dies jedoch tun .So:
Die Optionen können entweder
.caseInsensitive
oder angegeben werden[.caseInsensitive]
. Sie würden die zweite verwenden, wenn Sie zusätzliche Optionen verwenden möchten, z.Dieser Ansatz hat auch den Vorteil, dass bei der Suche andere Optionen verwendet werden können, z. B.
.diacriticInsensitive
Suchvorgänge. Das gleiche Ergebnis kann nicht einfach durch Verwendung. lowercased()
der Zeichenfolgen erzielt werden .quelle
Swift 3 Version:
quelle
.anchored
. Siehe meine Antwort oder Oliver Atkinson Antwort.In Swift 4 mit Erweiterungen
Meine Dehn-Beispiel enthält drei Funktionen: Check tun ein String beginnen mit einer Teilzeichen , machen einen String Ende zu einer Teilzeichen und machen Sie einen String enthält einen Substring.
Setzen Sie den Parameter isCaseSensitive auf false. Wenn Sie die Zeichen "A" oder "a" ignorieren möchten, setzen Sie ihn andernfalls auf "true".
Weitere Informationen zur Funktionsweise finden Sie in den Kommentaren im Code.
Code:
Beispiele zur Verwendung:
Zur Überprüfung beginnt der String mit "TEST":
Zur Überprüfung beginnt der String mit "test":
Zur Überprüfung endet der String mit "G123":
Zum Überprüfen endet der String mit "g123":
Zur Überprüfung enthält der String "RING12":
Zur Überprüfung enthält der String "ring12":
quelle