Ale*_*x G 10 regex objective-c ios
我希望能够在刺痛中找到一个子串,但它有一个独特的模式,我不知道如何找到.
EX.
NSString *test1= @"Contact Names
67-444-322
Dec 21 2012
23941 6745 9145072 01567
5511 23345 614567 123456
Older Contacts
See Back Side";
Run Code Online (Sandbox Code Playgroud)
我想在子字符串中找到以下模式(这些数字但不是日期数字)
23941 6745 9145072 01567
5511 23345 614567 123456
Run Code Online (Sandbox Code Playgroud)
但是,示例字符串的格式几乎不会相同.除了"联系人姓名","旧联系人"和"查看背面"之外,每次都会有不同的号码和不同的标题.一个将保持不变的是我正在寻找的数字总是有4个数字,但可能有1行或10行.
有谁知道我会如何解决这个问题?我正在考虑的事情可能只是找到字符串中的数字,然后检查哪些数字之间有3个空格.
谢谢
我尝试过以下内容并且有效:
NSString *test1= @"Contact Names\n"
"67-444-322\n"
"Dec 21 2012\n"
"23941 6745 9145072 01567\n"
"5511 23345 614567 123456\n"
"Older Contacts\n"
"See Back Side";
NSString *pattern = @"(([0-9]+ ){3}+[0-9]+)(\\n(([0-9]+ ){3}+[0-9]+))*";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];
NSArray *results = [regex matchesInString:test1 options:0 range:NSMakeRange(0, [test1 length])];
if ([results count] > 0) {
NSTextCheckingResult *result = [results objectAtIndex:0];
NSString *match = [test1 substringWithRange:result.range];
NSLog(@"\n%@", match); // These are your numbers
}
Run Code Online (Sandbox Code Playgroud)
(如果只有一行数字,它也可以工作.)
您可以使用字符集来分隔字符串,然后确定每个组件中是否有 4 个数字。仅当字符串\n中包含换行符 ( ) 时,这才有效(正如您对 Lance 的回复似乎表明的那样)。
这就是我的做法:
NSString *test1= @"Contact Names\n
67-444-322\n
Dec 21 2012\n
23941 6745 9145072 01567\n
5511 23345 614567 123456\n
Older Contacts\n
See Back Side";
NSArray *lines = [test1 componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet];
// lines now contains each line in test1
for (NSString* line in lines) {
NSArray *elements = [line componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet];
if (elements.count == 4) {
// This line contains 4 numbers
// convert each number string into an int if needed
}
}
Run Code Online (Sandbox Code Playgroud)
抱歉,代码行太长,Apple 的一些选择器有点长......无论如何,如果 elements 有 4 个单独的 ( NSString) 对象,那么它就是您正在寻找的行之一,您可以操作数据根据您的需要。
编辑(旁白):
关于正则表达式的主题(因为这个问题包含标签regex),是的,你可以使用正则表达式,但是 Objective-C 并没有真正有一个“好的”方法来处理它们......正则表达式更多地属于脚本语言领域以及对其有内置支持的语言。