Muszę usunąć spacje z końca łańcucha. Jak mogę to zrobić? Przykład: jeśli ciąg jest "Hello "
, musi być"Hello"
Muszę usunąć spacje z końca łańcucha. Jak mogę to zrobić? Przykład: jeśli ciąg jest "Hello "
, musi być"Hello"
Odpowiedzi:
Zaczerpnięty z tej odpowiedzi tutaj: 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
.
Inne rozwiązanie polega na utworzeniu łańcucha zmiennych:
//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"
Proszę bardzo...
- (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)];
}
Więc teraz po prostu to nazwij. Załóżmy, że masz ciąg znaków, który ma spacje z przodu i spacje na końcu, a po prostu chcesz usunąć spacje na końcu, możesz to nazwać w następujący sposób:
NSString *oneTwoThree = @" TestString ";
NSString *resultString;
resultString = [self removeEndSpaceFrom:oneTwoThree];
resultString
na końcu nie będzie miał spacji.
Aby usunąć białe znaki tylko na początku i na końcu łańcucha w Swift:
string.trimmingCharacters(in: .whitespacesAndNewlines)
string.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()))
stringByTrimmigCharactersInSet:
- „Zwraca nowy ciąg utworzony przez usunięcie z obu końców znaków odbiornika zawartych w danym zestawie znaków”. 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
Istnieje wiele innych zestawów znaków. Sprawdź to sam, zgodnie z wymaganiami.
Wersja szybka
Przycina tylko spacje na końcu ciągu:
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))))
}
Przycina spacje po obu stronach ciągu:
var str: String = " Yolo "
var trimmedStr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Spowoduje to usunięcie tylko wybranych znaków końcowych.
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
}
Proste rozwiązanie przycinania tylko jednego końca zamiast obu końców w Objective-C:
@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
I symetryczne narzędzie do przycinania tylko początku:
@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
Aby przyciąć wszystkie końcowe białe znaki (domyślam się, że tak jest naprawdę) twoja intencja), poniższy sposób jest całkiem czysty i zwięzły.
Swift 5:
let trimmedString = string.replacingOccurrences(of: "\\s+$", with: "", options: .regularExpression)
Cel C:
NSString *trimmedString = [string stringByReplacingOccurrencesOfString:@"\\s+$" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length)];
Jedna linia z odrobiną wyrażenia regularnego.
Rozwiązanie opisano tutaj: Jak usunąć białe znaki z prawego końca NSString?
Dodaj następujące kategorie do NSString:
- (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]];
}
I używasz go jako takiego:
[yourNSString stringByTrimmingTrailingWhitespaceAndNewlineCharacters]
Wymyśliłem tę funkcję, która zasadniczo zachowuje się podobnie do jednej z odpowiedzi Alexa:
-(NSString*)trimLastSpace:(NSString*)str{
int i = str.length - 1;
for (; i >= 0 && [str characterAtIndex:i] == ' '; i--);
return [str substringToIndex:i + 1];
}
whitespaceCharacterSet
poza tym sama spacja zawiera także znak tabulacji, który w moim przypadku nie mógł się pojawić. Sądzę więc, że zwykłe porównanie może wystarczyć.
let string = "Test Trimmed String"
Do usuwania białych znaków i nowej linii użyj poniższego kodu: -
niech str_trimmed = yourString.trimmingCharacters (w: .whitespacesAndNewlines)
Aby usunąć tylko spacje z ciągu, użyj poniższego kodu: -
niech str_trimmed = yourString.trimmingCharacters (w: .whitespaces)
NSString* NSStringWithoutSpace(NSString* string)
{
return [string stringByReplacingOccurrencesOfString:@" " withString:@""];
}