从字符串中删除格式:目标 c 中的“(123) 456-7890” => “1234567890”

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

试试这个

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

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

【讨论】:

如果数字格式不是预期的,您可以随时使用 stringByReplacingOccurrencesOfString,如以下链接中所示***.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 的电话库。格式化和提取电话号码很困难。我什至不会尝试自己动手做。

【讨论】:

以上是关于从字符串中删除格式:目标 c 中的“(123) 456-7890” => “1234567890”的主要内容,如果未能解决你的问题,请参考以下文章

如何从目标 c 中的单词 \"hello\" 中删除 \?

将标签移动到目标c中的矩形后如何从标签中删除触摸动作

如何从目标C中的数组中获取当前字符串值

链接 与 加载

如何从目标 C 中的 NSDictionary 中检索字符串?

简述C语言标准库函数strcpy功能和格式?