在iPhone上的Objective C中转义字符

3

我正在尝试传递以下字符串:

NSString* jsString = [NSString stringWithFormat:@"myFunc(\"%@\");", myParameter];

使用stringByEvaluatingJavaScriptFromString从Objective C转换为JavaScript,其中myParameter是一个字符串值。我如何确保myParameter字符串不包含任何JS-不安全字符,而不需要进行适当的转义?
例如,以下字符串会搞砸事情:
parameter");alert('scam');

myParameter字符串将是通讯录中联系人的姓名,因此完全可以输入上述字符串。
2个回答

2
您可以将每个"替换为\":
NSString* filteredParam = [myParameter stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"];
NSString* filteredParam = [filteredParam stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

KennyTM,你提供的代码是将每个“\”替换为“\ \”,而不是将每个“”替换为“\”。 - Adil Hussain

0
根据您的使用需求,您可以采用“模板”方法:
#define JSTemplateCodeKey @"##JS_CODE_HERE##"

// define template (or read it from file, ect...)
NSString *jsTemplate = @"myFunc(\"" JSTemplateCodeKey "\");";

// replace the placeholder in your template with your param
NSString *jsString = [jsTemplate stringByReplacingOccurrencesOfString:JSTemplateCodeKey withString:myParameter];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接