我想检查一个用户输入的NSString是否匹配另一个NSString的结尾部分,预期的结果:
def create
@cover = Cover.new(cover_params)
if @cover.save
respond_to do |format|
format.html
format.js
end
else
render "new"
end
end
以下代码有效:
User input To match Result
---------- ------------- ------
ing Good morning True
mor Good morning False (as mor is not at end of string)
ing$ Good morning False (as $ should not be treated as a regex char)
直到用户输入NSString *source;
NSString *input;
NSString *pattern;
NSRange range;
source = @"Good morning";
input = @"ing";
pattern = [input stringByAppendingString:@"$"];
range = [source rangeOfString:pattern options:NSRegularExpressionSearch];
NSLog(@"%@, %@, %@", source, pattern, NSStringFromRange(range));
-> Good morning, ing$, {9, 3}
:
ing$
问题是,如何逃避input = @"ing$";
pattern = [input stringByAppendingString:@"$"];
range = [source rangeOfString:pattern options:NSRegularExpressionSearch];
NSLog(@"%@, %@, %@", source, pattern, NSStringFromRange(range));
-> Good morning, ing$$, {9, 3}
,以免用户输入的字符被视为正则表达式字符?
答案 0 :(得分:0)
您需要像以下方式一样转义所有正则表达式字符 -
用户输入 - 需要转换ing \ $?