gpt4 book ai didi

objective-c - 如何从 NSString 的右端删除空格?

转载 作者:太空狗 更新时间:2023-10-30 03:13:18 25 4
gpt4 key购买 nike

这会删除字符串两端的空格:

NSString *newString = [oldString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

如何删除字符串右端的空格?

更新:accepted answer 中的代码现在是 SSToolkit 的一部分.耶!

最佳答案

更新:快速基准测试显示 Matt's own adaption , 基于 Max' & 我的,表现最好。

@implementation NSString (TrimmingAdditions)

- (NSString *)stringByTrimmingLeadingCharactersInSet:(NSCharacterSet *)characterSet {
NSUInteger location = 0;
NSUInteger length = [self length];
unichar charBuffer[length];
[self getCharacters:charBuffer];

for (location; location < length; location++) {
if (![characterSet characterIsMember:charBuffer[location]]) {
break;
}
}

return [self substringWithRange:NSMakeRange(location, length - location)];
}

- (NSString *)stringByTrimmingTrailingCharactersInSet:(NSCharacterSet *)characterSet {
NSUInteger location = 0;
NSUInteger length = [self length];
unichar charBuffer[length];
[self getCharacters:charBuffer];

for (length; length > 0; length--) {
if (![characterSet characterIsMember:charBuffer[length - 1]]) {
break;
}
}

return [self substringWithRange:NSMakeRange(location, length - location)];
}

@end

然后:

NSString *trimmedString = [yourString stringByTrimmingTrailingCharactersInSet:[NSCharacterset whitespaceAndNewlineCharacterSet]];

或前导空格:

NSString *trimmedString = [yourString stringByTrimmingLeadingCharactersInSet:[NSCharacterset whitespaceAndNewlineCharacterSet]];

它以抽象方式实现,因此您可以将它与任何可能的 NSCharacterSet 一起使用,whitespaceAndNewlineCharacterSet 只是其中之一。

为了方便起见,您可能希望添加这些包装器方法:

- (NSString *)stringByTrimmingLeadingWhitespace {
return [self stringByTrimmingLeadingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}

- (NSString *)stringByTrimmingTrailingWhitespace {
return [self stringByTrimmingTrailingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}

- (NSString *)stringByTrimmingLeadingWhitespaceAndNewline {
return [self stringByTrimmingLeadingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

- (NSString *)stringByTrimmingTrailingWhitespaceAndNewline {
return [self stringByTrimmingTrailingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

编辑:使用 charBuffer 恢复到初始版本以获得更好的性能。

关于objective-c - 如何从 NSString 的右端删除空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5689288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com