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