遍历文本字段中特定文本的值

时间:2018-08-14 13:08:37

标签: objective-c cocoa nsarray nspredicate

我有一个TextField,其值如下所示。

input

在这里,我必须遍历文本字段并检查尖括号(<>)中是否存在文本。

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

我尝试使用NSPredicate以及componentsSeparatedByString,但是我无法在其中获取确切的文本。

有什么方法可以获取准确的文本以及尖括号。就像上面提到的示例一样,只需

@"Testing<Car>Testing<Car2>Working<Car3 /Car 4> on the code"

感谢Advance的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

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:@", "]);

答案 1 :(得分:0)

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

map.entrySet()
            .stream()
            .collect(Collectors.toMap(
                    Entry::getKey,
                    x -> x.getValue().stream()
                                     .reduce(BigDecimal::add)
                                     .orElse(BigDecimal.ZERO)));