【发布时间】:2011-04-25 08:42:18
【问题描述】:
在我的应用程序中,我想从字符串中删除除字符 a-z 之外的数字。我怎样才能只获得字符?
【问题讨论】:
-
您的目标是什么版本的 SDK/OS?
在我的应用程序中,我想从字符串中删除除字符 a-z 之外的数字。我怎样才能只获得字符?
【问题讨论】:
这是不需要任何冗长编码的简短答案
NSString *newString = [[tempstr componentsSeparatedByCharactersInSet:
[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@""];`
迅速 3:
(tempstr.components(separatedBy:NSCharacterSet.letters.inverted)).joined(separator: "")
例如:
("abc123".components(separatedBy:NSCharacterSet.letters.inverted)).joined(separator: "")
【讨论】:
我找到了答案: 来自remove-all-but-numbers-from-nsstring
NSString *originalString = @"(123) 123123 abc";
NSLog(@"%@", originalString);
NSMutableString *strippedString = [NSMutableString
stringWithCapacity:originalString.length];
NSScanner *scanner = [NSScanner scannerWithString:originalString];
NSCharacterSet *numbers = [NSCharacterSet
characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyz"];
while ([scanner isAtEnd] == NO) {
NSString *buffer;
if ([scanner scanCharactersFromSet:numbers intoString:&buffer]) {
[strippedString appendString:buffer];
} else {
[scanner setScanLocation:([scanner scanLocation] + 1)];
}
}
NSLog(@"%@", strippedString);
【讨论】:
NSString *stringToFilter = @"filter-me";
NSMutableString *targetString = [NSMutableString string];
//set of characters which are required in the string......
NSCharacterSet *okCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyz"];
for(int i = 0; i < [stringToFilter length]; i++)
{
unichar currentChar = [stringToFilter characterAtIndex:i];
if([okCharacterSet characterIsMember:currentChar])
{
[targetString appendFormat:@"%C", currentChar];
}
}
NSLog(targetString);
[super viewDidLoad];
}
这是给我的答案,效果很好
【讨论】: