从角色中拆分字符串

时间:2011-06-13 09:44:21

标签: iphone objective-c nsstring

我正在尝试从字符串中获取数字。我有电话号码字符串所以我只需要数字。

我的字符串格式为:

P:000-000-0000
所以我使用以下代码:

[[strPhone componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];

在少数情况下,我的字符串格式如下:

P:000 000 0000 M:000 000 0000

我想要做的是......我想把我的字符串拆分成一个数组。为此我需要从字符中分割我的字符串。

有没有办法实现这个目标。

如果我们有

000 000 0000 Mo:000 000 0000格式然后阵列应该只有两个部分。一个应该用“P”分开,第二个用“Mo”分开。不是“P”的三部分,第二部分是“M”,第三部分是“o”。

Plz帮助我实现这个目标。

由于

3 个答案:

答案 0 :(得分:1)

我假设你有一个包含一些文字和电话号码的字符串。在这种情况下,您可以使用NSDataDetector类。像这样:

NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber
                                                              error:&error];

然后通过以下方式获取结果数组(电话号码)

NSArray * phoneNumbers = [detector metchesInString:YOURSTRING options:0 range:NSMakeRange(0, [YOURSTRING length])];

答案 1 :(得分:0)

使用以下代码:

NSString * list = @“Norman,Stanley,Fletcher”; NSArray * listItems = [list componentsSeparatedByString:@“,”];

listItmes包含所有分隔的字符串。

答案 2 :(得分:0)

您可以先分割数据,然后使用

检测一个字符串中的多个数字
NSArray *candidates = [strPhone componentsSeparatedByString:@":"];

然后循环候选人并执行您之前的电话号码检查并从结果中删除所有空字符串,例如

for (NSString *candidate in candidates) {
    NSString *result = <what you did before>;
    if ([result length] > 0) {
        <add to results array>;
    }
}