[英]iOS - NSString regex match
我有一個字符串例如:
NSString *str = @"Strängnäs"
然后我使用一個方法用*
替換斯堪的納維亞字母,所以它將是:
NSString *strReplaced = @"Str*ngn*s"
我需要一個函數來匹配str
與strReplaced
。 換句話說, *
應該被視為任何字符( *
應該與任何字符匹配)。
我怎樣才能做到這一點?
Strängnäs should be equal to Str*ngn*s
編輯:
也許我不夠清楚。 我希望*
被視為任何角色。 所以當做[@"Strängnäs" isEqualToString:@"Str*ngn*s"]
它應該返回YES
我認為以下正則表達式模式將匹配所有非ASCII文本,考慮到斯堪的納維亞字母不是ASCII:
[^ -~]
分別處理每一行以避免匹配換行符並將匹配替換為*。
演示: https : //regex101.com/r/dI6zN5/1
編輯:
這是基於上述模式的優化模式:
[^\000-~]
演示: https : //regex101.com/r/lO0bE9/1
編輯1:根據您的評論,您需要一個UDF(用戶定義的函數):
True
,否則返回false。 然后,您可以像CompareString(ScanStr,AsteriskStr)
一樣使用UDF。
我使用JLILI Amen發布的正則表達式創建了一個代碼示例
NSString *string = @"Strängnäs";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^ -~]" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"*"];
NSLog(@"%@", modifiedString);
Str*ngn*s
不確定你到底是什么,但也許這會有所幫助。
匹配任何東西的正則表達式模式是.
(點),所以你可以用strReplaced
替換*
來創建一個模式.
的:
NSString *pattern = [strReplaced stringByReplacingOccurencesOfString:@"*" withString:"."];
現在使用NSRegularExpression
您可以從pattern
構造一個正則表達式,然后查看str
匹配它 - 請參閱所需方法的文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.