我有一个包含单词和数字的字符串。如何从字符串中提取该数字?
NSString *str = @"This is my string. #1234";
我希望能够将 1234 作为 int 去掉。每次我搜索该字符串时,该字符串都会有不同的数字和单词。
Ideas?
这是一个NS扫描仪基于的解决方案:
// 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];
(其中的一些)此处做出的假设:
- 数字是 0-9,没有符号,没有小数点,没有千位分隔符等。如果需要,您可以向 NSCharacterSet 添加符号字符。
- 字符串中其他地方没有数字,或者如果有的话after您要提取的数字。
- 数量不会溢出
int
.
或者,您可以直接扫描至int
:
[scanner scanUpToCharactersFromSet:numbers intoString:NULL];
int number;
[scanner scanInt:&number];
If the #
标记字符串中数字的开始,您可以通过以下方式找到它:
[scanner scanUpToString:@"#" intoString:NULL];
[scanner setScanLocation:[scanner scanLocation] + 1];
// Now scan for int as before.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)