372 Stimmen

Leerzeichen vom Ende eines NSString abschneiden

Ich muss Leerzeichen aus dem Ende einer Zeichenkette entfernen. Wie kann ich das tun? Beispiel: Wenn die Zeichenkette "Hello " muss es werden "Hello"

4voto

King-Wizard Punkte 15270

Schnell Version

Schneidet nur Leerzeichen am Ende des Strings ab:

private func removingSpacesAtTheEndOfAString(var str: String) -> String {
    var i: Int = countElements(str) - 1, j: Int = i

    while(i >= 0 && str[advance(str.startIndex, i)] == " ") {
        --i
    }

    return str.substringWithRange(Range<String.Index>(start: str.startIndex, end: advance(str.endIndex, -(j - i))))
}

Trimmt die Zwischenräume auf beiden Seiten des Strings:

var str: String = " Yolo "
var trimmedStr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

4voto

Teo Sartori Punkte 1072

Dadurch werden nur die nachgestellten Zeichen Ihrer Wahl entfernt.

func trimRight(theString: String, charSet: NSCharacterSet) -> String {

    var newString = theString

    while String(newString.characters.last).rangeOfCharacterFromSet(charSet) != nil {
        newString = String(newString.characters.dropLast())
    }

    return newString
}

3voto

Tina Punkte 312

In Mauersegler

Um Leerzeichen und Zeilenumbrüche von beiden Seiten des Strings zu entfernen:

var url: String = "\n   http://example.com/xyz.mp4   "
var trimmedUrl: String = url.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

3voto

Cœur Punkte 34332

Eine einfache Lösung, um in Objective-C nur ein Ende anstelle beider Enden zu trimmen:

@implementation NSString (category)

/// trims the characters at the end
- (NSString *)stringByTrimmingSuffixCharactersInSet:(NSCharacterSet *)characterSet {
    NSUInteger i = self.length;
    while (i > 0 && [characterSet characterIsMember:[self characterAtIndex:i - 1]]) {
        i--;
    }
    return [self substringToIndex:i];
}

@end

Und ein symmetrisches Dienstprogramm, um nur den Anfang zu beschneiden:

@implementation NSString (category)

/// trims the characters at the beginning
- (NSString *)stringByTrimmingPrefixCharactersInSet:(NSCharacterSet *)characterSet {
    NSUInteger i = 0;
    while (i < self.length && [characterSet characterIsMember:[self characterAtIndex:i]]) {
        i++;
    }
    return [self substringFromIndex:i];
}

@end

3voto

PixelCloudSt Punkte 2745

Zum Beschneiden aller hintere Leerzeichen (ich nehme an, das ist eigentlich Ihre Absicht), ist das Folgende ein ziemlich sauberer und prägnanter Weg, dies zu tun.

Mauersegler 5:

let trimmedString = string.replacingOccurrences(of: "\\s+$", with: "", options: .regularExpression)

Objektiv-C:

NSString *trimmedString = [string stringByReplacingOccurrencesOfString:@"\\s+$" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length)];

Eine Zeile, mit einem Bindestrich aus Regex.

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