(已搜索过,但未能在此处或在Cocoa文档中找到此解决方案的简单解决方案)
Q值。如何仅从NSString中修剪所有前导空格? (即保留任何其他空格。)
不幸的是,就我的目的而言,NSString的stringByTrimmingCharactersInSet方法适用于前导和尾随。
需要Mac OS X 10.4兼容性,手动GC。
答案 0 :(得分:68)
这会创建一个NSString类别来执行您需要的操作。有了这个,您可以调用NSString *newString = [mystring stringByTrimmingLeadingWhitespace];
来获取副本减去前导空格。 (代码未经测试,可能需要一些小的调试。)
@interface NSString (trimLeadingWhitespace)
-(NSString*)stringByTrimmingLeadingWhitespace;
@end
@implementation NSString (trimLeadingWhitespace)
-(NSString*)stringByTrimmingLeadingWhitespace {
NSInteger i = 0;
while ((i < [self length])
&& [[NSCharacterSet whitespaceCharacterSet] characterIsMember:[self characterAtIndex:i]]) {
i++;
}
return [self substringFromIndex:i];
}
@end
答案 1 :(得分:49)
这是使用正则表达式的另一种解决方案(需要iOS 3.2):
NSRange range = [string rangeOfString:@"^\\s*" options:NSRegularExpressionSearch];
NSString *result = [string stringByReplacingCharactersInRange:range withString:@""];
如果您想修剪尾随空格,则只能使用@"\\s*$"
。
答案 2 :(得分:36)
此代码正在删除空白。
NSString *trimmedText = [strResult stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@",trimmedText);
答案 3 :(得分:25)
这是一种非常有效的(使用CoreFoundation)方法(取自kissxml):
- (NSString *)trimWhitespace {
NSMutableString *mStr = [self mutableCopy];
CFStringTrimWhitespace((CFMutableStringRef)mStr);
NSString *result = [mStr copy];
[mStr release];
return [result autorelease];
}
答案 4 :(得分:21)
NSString *myText = @" foo ";
NSString *trimmedText = [myText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSLog(@"old = [%@], trimmed = [%@]", myText, trimmedText);
答案 5 :(得分:3)
这是我要做的,而且不涉及类别!
NSString* outputString = inputString;
NSRange range = [inputString rangeOfCharacterFromSet: [NSCharacterSet whitespaceCharacterSet]
options:0];
if (range.location == 0)
outputString = [inputString substringFromIndex: range.location + range.length];
这是更少的代码。
答案 6 :(得分:0)
我没有太多时间来测试这个,我不确定10.4是否包含NSString的UTF8String方法,但这是我的方法:
的NSString + Trimming.h
#import <Foundation/Foundation.h>
@interface NSString (Trimming)
-(NSString *) stringByTrimmingWhitespaceFromFront;
@end
的NSString + Trimming.m
#import "NSString+Trimming.h"
@implementation NSString (Trimming)
-(NSString *) stringByTrimmingWhitespaceFromFront
{
const char *cStringValue = [self UTF8String];
int i;
for (i = 0; cStringValue[i] != '\0' && isspace(cStringValue[i]); i++);
return [self substringFromIndex:i];
}
@end
这可能不是最有效的方法,但它应该有效。
答案 7 :(得分:-5)
str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];