Nic*_*ard 38 iphone objective-c nsnumber nsstring ios
我有一个包含单词和数字的字符串.如何从字符串中提取该数字?
NSString *str = @"This is my string. #1234";
Run Code Online (Sandbox Code Playgroud)
我希望能够将1234剥离为int.每次搜索时,字符串都会有不同的数字和单词.
想法?
mar*_*ton 101
这是一个基于NSScanner的解决方案:
// Input
NSString *originalString = @"This is my string. #1234";
// Intermediate
NSString *numberString;
NSScanner *scanner = [NSScanner scannerWithString:originalString];
NSCharacterSet *numbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
// Throw away characters before the first number.
[scanner scanUpToCharactersFromSet:numbers intoString:NULL];
// Collect numbers.
[scanner scanCharactersFromSet:numbers intoString:&numberString];
// Result.
int number = [numberString integerValue];
Run Code Online (Sandbox Code Playgroud)
(这里有一些)假设在这里:
int.或者,您可以直接扫描到int:
[scanner scanUpToCharactersFromSet:numbers intoString:NULL];
int number;
[scanner scanInt:&number];
Run Code Online (Sandbox Code Playgroud)
如果#标记字符串中数字的开头,您可以通过以下方式找到它:
[scanner scanUpToString:@"#" intoString:NULL];
[scanner setScanLocation:[scanner scanLocation] + 1];
// Now scan for int as before.
Run Code Online (Sandbox Code Playgroud)
Zor*_*ayr 46
自包含解决方案:
+ (NSString *)extractNumberFromText:(NSString *)text
{
NSCharacterSet *nonDigitCharacterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
return [[text componentsSeparatedByCharactersInSet:nonDigitCharacterSet] componentsJoinedByString:@""];
}
Run Code Online (Sandbox Code Playgroud)
处理以下案件:
希望这可以帮助!
您可以使用 NSRegularExpression 类,自 iOS SDK 4 起可用。
下面是一个提取整数的简单代码(“\d+”正则表达式模式):
- (NSArray*) getIntNumbersFromString: (NSString*) string {
NSMutableArray* numberArray = [NSMutableArray new];
NSString* regexPattern = @"\\d+";
NSRegularExpression* regex = [[NSRegularExpression alloc] initWithPattern:regexPattern options:0 error:nil];
NSArray* matches = [regex matchesInString:string options:0 range:NSMakeRange(0, string.length)];
for( NSTextCheckingResult* match in matches) {
NSString* strNumber = [string substringWithRange:match.range];
[numberArray addObject:[NSNumber numberWithInt:strNumber.intValue]];
}
return numberArray;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34965 次 |
| 最近记录: |