簡體   English   中英

等效於Objective C中Java的Matcher.lookingAt()

[英]Equivalent of Java's Matcher.lookingAt() in Objective C

我正在將Java框架移植到目標C,而該框架在很大程度上依賴於正則表達式。 不幸的是,Java正則表達式API與Objective C API有很多不同。

我正在嘗試使用NSRegularExpression類來評估正則表達式。 在Java中,這是完全不同的:您必須使用Pattern和Matcher類。

有些事情我不知道(除其他外)。 什么是目標C中的Matcher.lookingAt()? 放入代碼中。 以下代碼的Objective C翻譯是什么?

Pattern pattern = Pattern.compile("[aZ]");
boolean lookingAt = pattern.matcher("abc").lookingAt();

感謝任何認識的人! (順便說一句,上面的示例將true賦給lookingAt布爾值)

我想到了! 這是與JavaRegularExpression等效的Java代碼:

NSError *error = nil;
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"[aZ]" options:0 error:&error];
if (error) {
    // Do something when an error occurs
}
NSString *candidate = @"abc";
BOOL lookingAt = [expression numberOfMatchesInString:candidate options:NSMatchingAnchored range:NSMakeRange(0, candidate.length)] > 0;

這里的重點在於執行表達式時的NSMatchingAnchored選項! 文檔說:

NSMatchingAnchored指定將匹配項限制為搜索范圍開始時的匹配項。 有關上下文中常量的描述,請參見enumerateMatchesInString:options:range:usingBlock:。

這正是我想要的!

你可能會做類似的事情

NSString *regex = @"ObjC";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", regex]; 

if( [predicate evaluateWithObject:myString]) 
    NSLog(@"matches");
else
    NSLog(@"does not match");

參閱謂詞格式字符串語法指南以了解更多選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM