加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 从Obj-C中的字符串中提取数字

发布时间:2020-12-16 10:53:24 所属栏目:百科 来源:网络整理
导读:参见英文答案 iphone sdk – Remove all characters except for numbers 0-9 from a string ????????????????????????????????????3个 我是Objective-C的新手,但在其他更高级的语言方面经验丰富.我想通过删除所有非数字字符来规范化字符串.换句话说,给定输入
参见英文答案 > iphone sdk – Remove all characters except for numbers 0-9 from a string ????????????????????????????????????3个
我是Objective-C的新手,但在其他更高级的语言方面经验丰富.我想通过删除所有非数字字符来规范化字符串.换句话说,给定输入字符串“206-555-1212”,归一化结果应为“2065551212”.下面的代码片段有效,但鉴于我在其他语言中的经验看起来有点矫枉过正.有没有更好的方法呢?

编辑:输入字符串“(206)555-1212”,“206.555.1212”,“206 555 1212”等也应返回相同的标准化结果.

NSString * normalize(NSString * number)
{
    NSString *normalizedNumber = @"";
    NSString *tmpString = nil;

    NSRange searchRange;
    NSRange resultRange;
    searchRange.location = 0;
    searchRange.length = number.length;

    while (0 < searchRange.length)
    {
        resultRange = [number rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]
                                        options:NSLiteralSearch
                                          range:searchRange];
        tmpString = [number substringWithRange:resultRange];
        normalizedNumber = [normalizedNumber stringByAppendingString:tmpString];
        searchRange.location = resultRange.location + resultRange.length;
        searchRange.length = number.length - searchRange.location;
    }

    return normalizedNumber;
}

解决方法

所有这些答案都没有解决问题的“删除所有非数字字符”部分.这是一个简单的方法:

NSString *normalize(NSString *number) {
    NSMutableCharacterSet *nonNumberCharacterSet = [NSMutableCharacterSet decimalDigitCharacterSet];
    [nonNumberCharacterSet invert];

    return [[number componentsSeparatedByCharactersInSet:nonNumberCharacterSet] componentsJoinedByString:@""];
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读