Tôi cần phải loại bỏ khoảng trắng từ cuối chuỗi. Làm thế nào tôi có thể làm điều đó? Ví dụ: nếu chuỗi là "Hello "
nó phải trở thành"Hello"
Tôi cần phải loại bỏ khoảng trắng từ cuối chuỗi. Làm thế nào tôi có thể làm điều đó? Ví dụ: nếu chuỗi là "Hello "
nó phải trở thành"Hello"
Câu trả lời:
Lấy từ câu trả lời này tại đây: 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
.
Một giải pháp khác liên quan đến việc tạo chuỗi đột biến:
//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"
Bạn đi đây ...
- (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)];
}
Vì vậy, bây giờ chỉ cần gọi nó. Giả sử bạn có một chuỗi có khoảng trắng ở mặt trước và khoảng trắng ở cuối và bạn chỉ muốn xóa khoảng trắng ở cuối, bạn có thể gọi nó như thế này:
NSString *oneTwoThree = @" TestString ";
NSString *resultString;
resultString = [self removeEndSpaceFrom:oneTwoThree];
resultString
sau đó sẽ không có khoảng trống ở cuối
Để xóa khoảng trắng từ đầu và cuối chuỗi trong Swift:
string.trimmingCharacters(in: .whitespacesAndNewlines)
string.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()))
stringByTrimmigCharactersInSet:
- "Trả về một chuỗi mới được tạo bằng cách xóa khỏi cả hai đầu của các ký tự người nhận có trong một bộ ký tự đã cho." developer.apple.com/reference/foundation/nsopes/ '
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
Có rất nhiều nhân vật khác. Kiểm tra nó theo yêu cầu của bạn.
Phiên bản Swift
Chỉ cắt các khoảng trắng ở cuối Chuỗi:
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))))
}
Cắt các khoảng trắng ở cả hai phía của Chuỗi:
var str: String = " Yolo "
var trimmedStr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Điều này sẽ chỉ loại bỏ các ký tự dấu của sự lựa chọn của bạn.
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
}
Một giải pháp đơn giản để chỉ cắt một đầu thay vì cả hai đầu trong 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
Và một tiện ích đối xứng để cắt tỉa chỉ bắt đầu:
@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
Để cắt tất cả các ký tự khoảng trắng ở cuối (tôi đoán đó thực sự là ý định của bạn), sau đây là một cách khá gọn gàng và ngắn gọn để thực hiện.
Swift 5:
let trimmedString = string.replacingOccurrences(of: "\\s+$", with: "", options: .regularExpression)
Mục tiêu-C:
NSString *trimmedString = [string stringByReplacingOccurrencesOfString:@"\\s+$" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length)];
Một dòng, với một chút regex.
Giải pháp được mô tả ở đây: Làm cách nào để xóa khoảng trắng khỏi đầu bên phải của NSString?
Thêm các danh mục sau vào 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]];
}
Và bạn sử dụng nó như vậy:
[yourNSString stringByTrimmingTrailingWhitespaceAndNewlineCharacters]
Tôi đã đưa ra chức năng này, về cơ bản hoạt động tương tự như trong câu trả lời của Alex:
-(NSString*)trimLastSpace:(NSString*)str{
int i = str.length - 1;
for (; i >= 0 && [str characterAtIndex:i] == ' '; i--);
return [str substringToIndex:i + 1];
}
whitespaceCharacterSet
ngoài không gian, bản thân nó cũng bao gồm ký tự tab, trong trường hợp của tôi không thể xuất hiện. Vì vậy, tôi đoán một so sánh đơn giản có thể đủ.
hãy để chuỗi = "Kiểm tra chuỗi đã cắt"
Để xóa khoảng trắng và dòng mới, hãy sử dụng mã bên dưới: -
hãy để str_trimmed = yourString.trimmingChar character (in: .whitespacesAndNewlines)
Để chỉ xóa Không gian khỏi chuỗi, hãy sử dụng mã bên dưới: -
hãy để str_trimmed = yourString.trimmingChar character (in: .whitespaces)
NSString* NSStringWithoutSpace(NSString* string)
{
return [string stringByReplacingOccurrencesOfString:@" " withString:@""];
}