655 Stimmen

Wie überprüfe ich, ob ein String in Swift einen anderen String enthält?

In Objective-C lautet der Code zum Überprüfen eines Teilstrings in einem NSString:

NSString *string = @"hello Swift";
NSRange textRange =[string rangeOfString:@"Swift"];
if(textRange.location != NSNotFound)
{
    NSLog(@"exists");
}

Aber wie mache ich das in Swift?

0voto

Tommie C. Punkte 12311

Ich habe ein paar interessante Anwendungsfälle gefunden. Diese Varianten nutzen die rangeOfString-Methode und ich habe das Gleichheitsbeispiel eingeschlossen, um zu zeigen, wie man am besten die Such- und Vergleichsfunktionen von Strings in Swift 2.0 nutzen kann.

//In viewDidLoad() weise ich die aktuelle Objektbeschreibung (ein Swift String) self.loadedObjectDescription zu
self.loadedObjectDescription = self.myObject!.description

Später, nachdem ich Änderungen an self.myObject vorgenommen habe, kann ich auf die folgenden string comparison-Routinen verweisen (die als lazy Variablen eingerichtet sind und einen Bool-Wert zurückgeben). Dies ermöglicht es, den Zustand jederzeit zu überprüfen.

lazy var objectHasChanges : Bool = {
        guard self.myObject != nil else { return false }
        return !(self.loadedObjectDescription == self.myObject!.description)
    }()

Eine Variante davon tritt auf, wenn ich manchmal eine fehlende Eigenschaft an diesem Objekt analysieren muss. Eine Stringsuche ermöglicht es mir, ein bestimmtes Teilzeichenkette zu finden, die auf nil gesetzt ist (der Standardwert bei der Erstellung eines Objekts).

    lazy var isMissingProperty : Bool = {
        guard self.myObject != nil else { return true }
        let emptyPropertyValue = "myProperty = nil"
        return (self.myObject!.description.rangeOfString(emptyPropertyValue) != nil) ? true : false
    }()

0voto

Rudolf Adamkovič Punkte 29868

In iOS 8 und neuer können Sie diese beiden NSString-Methoden verwenden:

@availability(iOS, introduced=8.0)
func containsString(aString: String) -> Bool

@availability(iOS, introduced=8.0)
func localizedCaseInsensitiveContainsString(aString: String) -> Bool

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X