Ich muss Leerzeichen am Ende einer Zeichenfolge entfernen. Wie kann ich das machen? Beispiel: Wenn Zeichenfolge ist "Hello "
, muss es werden"Hello"
Ich muss Leerzeichen am Ende einer Zeichenfolge entfernen. Wie kann ich das machen? Beispiel: Wenn Zeichenfolge ist "Hello "
, muss es werden"Hello"
Antworten:
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
}
whitespaceAndNewlineCharacterSet
.
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"
Bitte schön...
- (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)];
}
Also jetzt nenn es einfach. Angenommen, Sie haben eine Zeichenfolge mit Leerzeichen an der Vorderseite und Leerzeichen am Ende und möchten nur die Leerzeichen am Ende entfernen. Sie können dies folgendermaßen aufrufen:
NSString *oneTwoThree = @" TestString ";
NSString *resultString;
resultString = [self removeEndSpaceFrom:oneTwoThree];
resultString
wird dann am Ende keine Leerzeichen haben.
So entfernen Sie Leerzeichen nur vom Anfang und Ende eines Strings in Swift:
string.trimmingCharacters(in: .whitespacesAndNewlines)
string.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()))
stringByTrimmigCharactersInSet:
- "Gibt eine neue Zeichenfolge zurück, die durch Entfernen der in einem bestimmten Zeichensatz enthaltenen Empfängerzeichen an beiden Enden erstellt wurde." developer.apple.com/reference/foundation/nsstring/…
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 Zeichensätze. Überprüfen Sie es selbst gemäß Ihren Anforderungen.
Schnelle Version
Trimmt nur Leerzeichen am Ende des Strings:
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 Leerzeichen auf beiden Seiten des Strings:
var str: String = " Yolo "
var trimmedStr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Dadurch werden nur die nachfolgenden 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 Ziel-C nur ein Ende anstelle beider Enden zu kürzen:
@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 zum Trimmen nur des Anfangs:
@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
Um all zu trimmen hintere Leerzeichen (Ich vermute , das ist eigentlich Ihre Absicht), ist die folgende eine ziemlich sauber und präzise Art und Weise , es zu tun.
Swift 5:
let trimmedString = string.replacingOccurrences(of: "\\s+$", with: "", options: .regularExpression)
Ziel c:
NSString *trimmedString = [string stringByReplacingOccurrencesOfString:@"\\s+$" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length)];
Eine Zeile mit einem Schuss Regex.
Die Lösung wird hier beschrieben: Wie entferne ich Leerzeichen vom rechten Ende von NSString?
Fügen Sie NSString die folgenden Kategorien hinzu:
- (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
}
- (NSString *)stringByTrimmingTrailingWhitespaceAndNewlineCharacters {
return [self stringByTrimmingTrailingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
Und du benutzt es als solches:
[yourNSString stringByTrimmingTrailingWhitespaceAndNewlineCharacters]
Ich habe mir diese Funktion ausgedacht, die sich im Grunde ähnlich verhält wie in der Antwort von Alex:
-(NSString*)trimLastSpace:(NSString*)str{
int i = str.length - 1;
for (; i >= 0 && [str characterAtIndex:i] == ' '; i--);
return [str substringToIndex:i + 1];
}
whitespaceCharacterSet
Neben dem Leerzeichen selbst befindet sich auch ein Tabulatorzeichen, das in meinem Fall nicht erscheinen konnte. Ein einfacher Vergleich könnte also ausreichen.
let string = "Test Trimmed String"
Verwenden Sie zum Entfernen von Leerzeichen und neuen Zeilen den folgenden Code: -
let str_trimmed = yourString.trimmingCharacters (in: .whitespacesAndNewlines)
Verwenden Sie den folgenden Code, um nur Leerzeichen aus der Zeichenfolge zu entfernen: -
let str_trimmed = yourString.trimmingCharacters (in: .whitespaces)
NSString* NSStringWithoutSpace(NSString* string)
{
return [string stringByReplacingOccurrencesOfString:@" " withString:@""];
}