Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 循环遍历特定文本的Textfield中的值_Objective C_Cocoa_Nsarray_Nspredicate - Fatal编程技术网

Objective c 循环遍历特定文本的Textfield中的值

Objective c 循环遍历特定文本的Textfield中的值,objective-c,cocoa,nsarray,nspredicate,Objective C,Cocoa,Nsarray,Nspredicate,我有一个文本字段,其值如下所示 @"Testing<Car>Testing<Car2>Working<Car3 /Car 4> on the code" @“测试正在处理代码” 在这里,我必须循环遍历文本字段,并检查尖括号()中的文本 尖括号内可以有空格或任何特殊字符 我试着使用NSPredicate和由字符串分隔的组件,但无法获得其中的确切文本 有没有办法得到准确的文本和尖括号。就像上面提到的例子一样,你只需要 @"<Car>,<Car

我有一个文本字段,其值如下所示

@"Testing<Car>Testing<Car2>Working<Car3 /Car 4> on the code"
@“测试正在处理代码”
在这里,我必须循环遍历文本字段,并检查尖括号(<>)中的文本

尖括号内可以有空格或任何特殊字符

我试着使用NSPredicate和由字符串分隔的组件,但无法获得其中的确切文本

有没有办法得到准确的文本和尖括号。就像上面提到的例子一样,你只需要

@"<Car>,<Car2> , <Car3 /Car 4>"
@“

提前感谢您的帮助。

我们可以用不同的方法解决它。现在我正在展示一种方法。您可以将textfield.text替换为str

NSString *str =  @"This is just Added < For testing %@ ___ & >";
NSRange r1 = [str rangeOfString:@"<" options: NSBackwardsSearch];
NSRange r2 = [str rangeOfString:@">" options: NSBackwardsSearch];
NSRange rSub = NSMakeRange(r1.location + r1.length, r2.location - r1.location - r1.length);
NSString *sub = [str substringWithRange:rSub];
NSString*str=@“这是刚刚添加的”;
NSRange r1=[str rangeOfString:@“选项:NSBackwardsSearch];
NSRange rSub=NSMakeRange(r1.location+r1.length,r2.location-r1.location-r1.length);
NSString*sub=[str substringWithRange:rSub];

正则表达式是一种可能的解决方案。模式检查是否有
后跟一个或多个非代码>
字符和一个

EnumerateMatchesInstalling
提取子字符串并将其附加到数组中。最后,将数组展平为单个字符串

NSString *string = @"Testing<Car>Testing<Car2>Working<Car3 /Car 4> on the code";

NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:@"<[^>]+>" options:0 error:nil];
__block NSMutableArray<NSString *> *matches = [NSMutableArray array];
[regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, string.length) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {
    if (result) [matches addObject:[string substringWithRange:result.range]];
}];

NSLog(@"%@", [matches componentsJoinedByString:@", "]);
NSString*string=@“测试代码”;
NSRegularExpression*regex=[[NSRegularExpression alloc]initWithPattern:@“]+>”选项:0错误:nil];
__块NSMutableArray*匹配=[NSMutableArray];
[regex EnumerateMatchesInstalling:string选项:0范围:NSMakeRange(0,string.length)usingBlock:^(NSTextCheckInResult*\u可空结果,NSMatchingFlags标志,BOOL*\u非空停止){
if(result)[匹配addObject:[string substringWithRange:result.range]];
}];
NSLog(@“%@,[匹配组件通过字符串连接:@“,”]);

您能否提供一些您需要完成的可视化示例?你所说的“文本出现在<>”是什么意思?什么文本?修改了问题。现在清楚了吗?您的示例中没有尖括号。请编辑问题以添加一个有意义的示例以及预期结果。现在已发布带有角括号的示例,“(如,)”并不是对您需求的澄清。请仔细检查你的问题,否则任何人都不可能理解你的需求。“检查文本”是什么意思?您需要突出显示尖括号中的字符串吗?谢谢您的回答。但是textfield.text可以与常规文本一起使用多个尖括号。另外,我需要最后的字符串和尖括号。用一个例子更新了我的问题