Ich muss Leerzeichen aus dem Ende einer Zeichenkette entfernen. Wie kann ich das tun? Beispiel: Wenn die Zeichenkette "Hello "
muss es werden "Hello"
Antworten
Zu viele Anzeigen?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())
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
}
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
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.