Ios 查找NSString中的第一个字母并向后计数

Ios 查找NSString中的第一个字母并向后计数,ios,parsing,nsstring,nsscanner,Ios,Parsing,Nsstring,Nsscanner,我是IOS新手,正在寻找一些指导 我正在解析一个长字符串。开头可能有几个垃圾字符(可以是任何非字母字符),然后是11个数字或空格,然后是一个字母(a-Z)。我需要得到字母的位置,得到字母后面11个字符到字母后面1个字符的子字符串 有谁能给我一些关于如何做的指导吗 示例:”!!2553072 C' 我想要:'53072'您可以使用s来拆分字符串,然后获取剩余的第一个组件(由垃圾和数字组成)并获取该组件的子字符串。例如(未编译、未测试): 您可以使用s拆分字符串,然后获取剩余的第一个组件(由垃圾和数

我是IOS新手,正在寻找一些指导

我正在解析一个长字符串。开头可能有几个垃圾字符(可以是任何非字母字符),然后是11个数字或空格,然后是一个字母(a-Z)。我需要得到字母的位置,得到字母后面11个字符到字母后面1个字符的子字符串

有谁能给我一些关于如何做的指导吗

示例:
”!!2553072 C'

我想要:
'53072'

您可以使用s来拆分字符串,然后获取剩余的第一个组件(由垃圾和数字组成)并获取该组件的子字符串。例如(未编译、未测试):

您可以使用s拆分字符串,然后获取剩余的第一个组件(由垃圾和数字组成)并获得该组件的子字符串。例如(未编译、未测试):


也许有一种更优雅的方法可以做到这一点,包括正则表达式或一些Objective-C魔法,但这里有一个简单的解决方案(经过个人测试)


也许有一种更优雅的方法可以做到这一点,包括正则表达式或一些Objective-C魔法,但这里有一个简单的解决方案(经过个人测试)


您可以使用正则表达式模式来实现这一点:
(.{11})\b[A-Z]\b

(.{11})
将获取任意11个字符,
\b[A-Z]\b
将在单词边界上查找单个字符,这意味着它将被空格包围或位于字符串末尾。如果示例中的
C
后面有字符,请删除最后一个
\b
。这可以通过Objective-C实现,如下所示:

NSError *error;
NSString *example = @"!!2553072      C";
NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:@"(.{11})\\b[A-Z]\\b"
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];

if(!regex)
{
    //handle error
}

NSTextCheckingResult *match = [regex firstMatchInString:example
                                                options:0
                                                  range:NSMakeRange(0, [example length])];
if(match)
{
    NSLog(@"match: %@", [example substringWithRange:[match rangeAtIndex:1]]);
}

您可以使用正则表达式模式来实现这一点:
(.{11})\b[A-Z]\b

(.{11})
将获取任意11个字符,
\b[A-Z]\b
将在单词边界上查找单个字符,这意味着它将被空格包围或位于字符串末尾。如果示例中的
C
后面有字符,请删除最后一个
\b
。这可以通过Objective-C实现,如下所示:

NSError *error;
NSString *example = @"!!2553072      C";
NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:@"(.{11})\\b[A-Z]\\b"
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];

if(!regex)
{
    //handle error
}

NSTextCheckingResult *match = [regex firstMatchInString:example
                                                options:0
                                                  range:NSMakeRange(0, [example length])];
if(match)
{
    NSLog(@"match: %@", [example substringWithRange:[match rangeAtIndex:1]]);
}

我假设你的意思是11个字符,你的例子很短-你说你想要的字符串只有6个字符长。是的,很抱歉他们在发帖时删除了多个空格我假设你的意思是11个字符,你的例子很短-你说你想要的字符串只有6个字符长。是的,很抱歉他们在发布这些内容时删掉了多个空格。这些都非常有用,但我使用了这种方法。谢谢大家。这些都非常有用,但我用了这个方法。谢谢大家。
NSError *error;
NSString *example = @"!!2553072      C";
NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:@"(.{11})\\b[A-Z]\\b"
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];

if(!regex)
{
    //handle error
}

NSTextCheckingResult *match = [regex firstMatchInString:example
                                                options:0
                                                  range:NSMakeRange(0, [example length])];
if(match)
{
    NSLog(@"match: %@", [example substringWithRange:[match rangeAtIndex:1]]);
}