【问题标题】:Remove formatting from a string: “(123) 456-7890” => “1234567890” in objective c从字符串中删除格式:目标 c 中的“(123) 456-7890” => “1234567890”
【发布时间】:2016-05-31 06:27:06
【问题描述】:

我有一串电话号码,格式为 (123)-(456)-7890,但如何转换为以下形式 1234567890?

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    试试这个

    NSString *numberString = [[mixedString componentsSeparatedByCharactersInSet:
                    [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] 
                    componentsJoinedByString:@""];
    

    它将给出字符串中的数字。

    【讨论】:

    • 如果数字格式不是预期的,您可以随时使用 stringByReplacingOccurrencesOfString,如以下链接中所示stackoverflow.com/questions/6638623/…
    • 非常感谢 Maulik
    • @SivaramYadav:当然!你应该开始接受答案了。
    【解决方案2】:

    stringByReplacingOccurrencesOfString也支持正则表达式

    NSString *phoneNumber = @"(123)-(456)-7890";
    NSString *filteredPhoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"[ ()-]" 
                                     withString:@""
                                        options:NSRegularExpressionSearch 
                                          range:NSMakeRange(0, phoneNumber.length)];
    NSLog(@"%@", filteredPhoneNumber);
    

    将所有要忽略的字符放在第一个参数的括号之间。

    另一种正则表达式是@"[^\\d+]",这意味着忽略所有非数字字符

    【讨论】:

      【解决方案3】:
      NSString *str = @"(123)-(456)-7890";
      str = [str stringByReplacingOccurrencesOfString: @"(" withString:@""];
      str = [str stringByReplacingOccurrencesOfString: @")" withString:@""];
      str = [str stringByReplacingOccurrencesOfString: @"-" withString:@""];
      NSLog(@"Output = %@",str);
      

      输出 = 1234567890

      【讨论】:

        【解决方案4】:

        您还可以使用 stringByReplacingOccurrencesOfString 替换单行编码中的更多字符

        NSString *YourString = @"(123)-(456)-7890";
        YourString = [[[YourString stringByReplacingOccurrencesOfString:@"(" withString:@""] stringByReplacingOccurrencesOfString:@")" withString:@""] stringByReplacingOccurrencesOfString:@"-" withString:@""];
        NSLog(@"YourString == > %@",YourString);
        

        YourString == > 1234567890

        【讨论】:

          【解决方案5】:

          使用此代码,

          NSString *valString = @"(123)456-7890";
          
          NSString* phoneStr=[[[valString stringByReplacingOccurrencesOfString:@"(" withString:@""] stringByReplacingOccurrencesOfString:@")" withString:@""] stringByReplacingOccurrencesOfString:@"-" withString:@""];
          
          NSLog(@"phone String %@",phoneStr); // finally you get phone String 1234567890
          

          它对我有用,希望它有帮助

          【讨论】:

            【解决方案6】:

            如果您希望您的代码在美国以外的地区使用,请使用 Google 的电话库。格式化和提取电话号码很困难。我什至不会尝试自己动手做。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-01-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-21
              • 2015-01-13
              • 1970-01-01
              相关资源
              最近更新 更多