如何使用 A1Z26 密码解码 NSString?
How can I decode an NSString using the A1Z26 cipher?
我正在尝试使用 A1Z26 密码(即 a=1、b=2、...、z=26)解码 an。输入文本由连字符分隔,如下所示:
-8-16-2-7-8-5-
我有 JavaScript 解决了这个问题,但我似乎无法在 Objective C
中使用一个版本
function a1z26Cipher(inputString) {
var outputString = "";
var splitString = inputString.split(/(\W| )/);
for (var i = 0; i < splitString.length; i++) {
var n = splitString[i];
if (n >= 1 && n <= 26) outputString += String.fromCharCode(parseInt(n, 10) + 64);
else outputString += n.replace("-", "");
}
return outputString;
}
Objective C 中的等效代码是什么样的?
在 Objective C 中,可以按如下方式完成:
-(NSString *)decode:(NSString *)input {
NSArray<NSString *> *components = [input componentsSeparatedByString:@"-"];
NSMutableString *output = [[NSMutableString alloc] init];
for (NSString *component in components) {
if (component.length == 0) {
continue;
}
char charValue = (char) [component intValue];
[output appendFormat:@"%c", charValue + ('a' - 1)];
}
return [NSString stringWithString:output];
}
请注意,这假定输入已经具有正确的格式。它将愉快地接受 "--42-df-w---wf"
形式的字符串。
编辑:如果有多个可能的分隔符(例如连字符和 space),您可以使用 NSCharacterSet
:
-(NSString *)decode:(NSString *)input {
NSCharacterSet *separatorSet = [NSCharacterSet characterSetWithCharactersInString: @"- "];
NSArray<NSString *> *components = [input componentsSeparatedByCharactersInSet:separatorSet];
...
}
我正在尝试使用 A1Z26 密码(即 a=1、b=2、...、z=26)解码 an。输入文本由连字符分隔,如下所示:
-8-16-2-7-8-5-
我有 JavaScript 解决了这个问题,但我似乎无法在 Objective C
中使用一个版本function a1z26Cipher(inputString) {
var outputString = "";
var splitString = inputString.split(/(\W| )/);
for (var i = 0; i < splitString.length; i++) {
var n = splitString[i];
if (n >= 1 && n <= 26) outputString += String.fromCharCode(parseInt(n, 10) + 64);
else outputString += n.replace("-", "");
}
return outputString;
}
Objective C 中的等效代码是什么样的?
在 Objective C 中,可以按如下方式完成:
-(NSString *)decode:(NSString *)input {
NSArray<NSString *> *components = [input componentsSeparatedByString:@"-"];
NSMutableString *output = [[NSMutableString alloc] init];
for (NSString *component in components) {
if (component.length == 0) {
continue;
}
char charValue = (char) [component intValue];
[output appendFormat:@"%c", charValue + ('a' - 1)];
}
return [NSString stringWithString:output];
}
请注意,这假定输入已经具有正确的格式。它将愉快地接受 "--42-df-w---wf"
形式的字符串。
编辑:如果有多个可能的分隔符(例如连字符和 space),您可以使用 NSCharacterSet
:
-(NSString *)decode:(NSString *)input {
NSCharacterSet *separatorSet = [NSCharacterSet characterSetWithCharactersInString: @"- "];
NSArray<NSString *> *components = [input componentsSeparatedByCharactersInSet:separatorSet];
...
}