我想创建一个de code类型的应用程序,其中你有一个代码“a = z,b = y,c = x”,当用户在文本字段中放入混杂的字母时,它将解码它适合他们。例如。我输入“a b c”,当我点击一个按钮时,它将显示在另一个文本字段“z y x”中。
我尝试过像这样使用Regex:
NSString *inputFieldContents = inputField.text; // Suppose it's "Hello, zyxw!";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"zyxw" options:NSRegularExpressionCaseInsensitive error:NULL];
NSRange range = NSMakeRange (0, [inputFieldContents length]);
NSString *res = [regex stringByReplacingMatchesInString:inputFieldContents options:0 range:range withTemplate:@"abcd"];
NSLog(@"%@", res);
但是如果字母zyxw被输入,这只会给我解码的消息。如果我输入wxyz,它就不会像我希望的那样给我dcba。
有没有人知道如何做到这一点?
谢谢!
答案 0 :(得分:2)
你可以使用:
简单地替换可变字符串中的字符串 -[NSMutableString replaceOccurrencesOfString:withString:options:range:]
。
如果您的案例非常基础,您可能会赞成:
-[NSString stringByReplacingOccurrencesOfString:withString:]
更新 - 所以解决这个问题的一种方法是:
NSMutableString * str = [inputField.text mutableCopy];
enum { NumSubstitutions = 4 };
NSString * const sought[NumSubstitutions] = { @"z", @"y", @"x", @"w" };
NSString * const replacements[NumSubstitutions] = { @"a", @"b", @"c", @"d" };
for (NSUInteger i = 0; i < NumSubstitutions; ++i) {
[str replaceOccurrencesOfString:sought[i]
withString:replacements[i]
options:NSCaseInsensitiveSearch
range:NSMakeRange(0, inputFieldContents.length)];
}
return [str copy];