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"

903voto

Dan Punkte 17173

Aus dieser Antwort hier entnommen: https://stackoverflow.com/a/5691567/251012

- (NSString *)stringByTrimmingTrailingCharactersInSet:(NSCharacterSet *)characterSet {
    NSRange rangeOfLastWantedCharacter = [self rangeOfCharacterFromSet:[characterSet invertedSet]
                                                               options:NSBackwardsSearch];
    if (rangeOfLastWantedCharacter.location == NSNotFound) {
        return @"";
    }
    return [self substringToIndex:rangeOfLastWantedCharacter.location+1]; // non-inclusive
}

21voto

Matt H. Punkte 9832

Eine andere Lösung besteht darin, eine veränderbare Zeichenfolge zu erstellen:

//make mutable string
NSMutableString *stringToTrim = [@" i needz trim " mutableCopy];

//pass it by reference to CFStringTrimSpace
CFStringTrimWhiteSpace((__bridge CFMutableStringRef) stringToTrim);

//stringToTrim is now "i needz trim"

13voto

Alex Punkte 181

Hier, bitte sehr...

- (NSString *)removeEndSpaceFrom:(NSString *)strtoremove{
    NSUInteger location = 0;
    unichar charBuffer[[strtoremove length]];
    [strtoremove getCharacters:charBuffer];
    int i = 0;
    for(i = [strtoremove length]; i >0; i--) {
        NSCharacterSet* charSet = [NSCharacterSet whitespaceCharacterSet];
        if(![charSet characterIsMember:charBuffer[i - 1]]) {
            break;
        }
    }
    return [strtoremove substringWithRange:NSMakeRange(location, i  - location)];
}

Rufen Sie es also einfach an. Angenommen, Sie haben eine Zeichenkette mit Leerzeichen am Anfang und Leerzeichen am Ende, und Sie wollen nur die Leerzeichen am Ende entfernen, dann können Sie es so aufrufen:

NSString *oneTwoThree = @"  TestString   ";
NSString *resultString;
resultString = [self removeEndSpaceFrom:oneTwoThree];

resultString hat dann keine Leerzeichen am Ende.

12voto

g212gs Punkte 852
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
                              [NSCharacterSet whitespaceAndNewlineCharacterSet]];
//for remove whitespace and new line character

NSString *trimmedString = [string stringByTrimmingCharactersInSet:
                              [NSCharacterSet punctuationCharacterSet]]; 
//for remove characters in punctuation category

Es gibt viele andere CharacterSets. Prüfen Sie es selbst, je nach Ihren Anforderungen.

9voto

lostAtSeaJoshua Punkte 1675

So entfernen Sie in Swift Leerzeichen nur am Anfang und am Ende eines Strings:

Mauersegler 3

string.trimmingCharacters(in: .whitespacesAndNewlines)

Frühere Swift-Versionen

string.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()))

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