Javascript 如何使用A1Z26密码解码NSString?

Javascript 如何使用A1Z26密码解码NSString?,javascript,objective-c,cryptography,equivalent,Javascript,Objective C,Cryptography,Equivalent,我正在尝试使用A1Z26密码(即a=1,b=2,…,z=26)对a进行解码。输入文本由连字符分隔,如下所示: -8-16-2-7-8-5- 我有解决这个问题的JavaScript,但我似乎无法让一个版本在Objective C中工作 function a1z26Cipher(inputString) { var outputString = ""; var splitString = inputString.split(/(\W| )/); for (var i = 0

我正在尝试使用A1Z26密码(即a=1,b=2,…,z=26)对a进行解码。输入文本由连字符分隔,如下所示:

-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;
}
函数A1Z26密码(inputString){
var outputString=“”;
var splitString=inputString.split(/(\W|)/);
对于(变量i=0;i如果目标C中的(n>=1&&n,则可按如下方式进行:

-(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];
}

对meSorry不起作用,更正了一个错误。之前只是转换ASCII。仍然不起作用。您不应该通过分隔字符串int值获取字符,您应该将该值添加到('a'-1)中。您可以解释它是如何不起作用的吗?在我的系统上运行它可以正常工作。如果您查看以下行,
('a'-1)
是在那里添加的。char charValue=(char)([component intValue]+('a'-1));这是修复方法,因为我取int值(从1到26),然后将其添加到a-1的值中,以获得该位置的char,例如1将变成(1+('a'-1)),这是一个副本,但我想你会发现这篇文章很有用:有一个好的!
-(NSString *)decode:(NSString *)input {
    NSCharacterSet *separatorSet = [NSCharacterSet characterSetWithCharactersInString: @"- "];
    NSArray<NSString *> *components = [input componentsSeparatedByCharactersInSet:separatorSet];
    ...
}