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?

9voto

Ken Punkte 107

Hier ist mein erster Versuch dazu im Swift-Playground. Ich erweitere String, indem ich zwei neue Funktionen bereitstelle (contains und containsIgnoreCase)

extension String {
    func contains(other: String) -> Bool{
        var start = startIndex

        do{
            var subString = self[Range(start: start++, end: endIndex)]
            if subString.hasPrefix(other){
                return true
            }

        }while start != endIndex

        return false
    }

    func containsIgnoreCase(other: String) -> Bool{
        var start = startIndex

        do{
            var subString = self[Range(start: start++, end: endIndex)].lowercaseString
            if subString.hasPrefix(other.lowercaseString){
                return true
            }

        }while start != endIndex

        return false
    }
}

Verwende es so

var sentence = "Dies ist ein Test-Satz"
sentence.contains("dies")  //gibt false zurück
sentence.contains("Dies")  //gibt true zurück
sentence.containsIgnoreCase("dies")  //gibt true zurück

"Dies ist ein weiterer Test-Satz".contains(" test ")    //gibt true zurück

Ich würde mich über jedes Feedback freuen :)

9voto

manojlds Punkte 273771

Sie können einfach das tun, was Sie erwähnt haben:

import Foundation
...
string.contains("Swift");

Aus den Dokumenten:

Swifts String-Typ ist nahtlos mit der NSString-Klasse von Foundation verbunden. Wenn Sie mit dem Foundation-Framework in Cocoa oder Cocoa Touch arbeiten, steht Ihnen die gesamte NSString-API zur Verfügung, die Sie für jeden erstellten String-Wert aufrufen können, zusätzlich zu den in diesem Kapitel beschriebenen String-Funktionen. Sie können auch einen String-Wert mit jeder API verwenden, die eine NSString-Instanz erfordert.

Sie müssen import Foundation verwenden, um die NSString-Methoden zu verbinden und sie für die String-Klasse von Swift verfügbar zu machen.

7voto

S Lareau Punkte 179

Swift 5, Groß- und Kleinschreibung ignorieren:

if string.localizedLowercase.contains("swift".localizedLowercase){
    // dein Code hier
}

6voto

Stéphane de Luca Punkte 11632

Hier sind Sie:

let s = "hello Swift"
if let textRange = s.rangeOfString("Swift") {
    NSLog("exists")
}

5voto

Max Ivashkevich Punkte 356

Sie müssen keinen benutzerdefinierten Code dafür schreiben. Ab Version 1.2 verfügt Swift bereits über alle Methoden, die Sie benötigen:

  • die Länge eines Strings abrufen: count(string);
  • überprüfen, ob ein String ein Unterstring enthält: contains(string, substring);
  • überprüfen, ob ein String mit einem Unterstring beginnt: startsWith(string, substring)
  • und so weiter.

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