繁体   English   中英

替换来自json请求目标c的双引号

[英]Replacing Double quotes from json request objective c

卡在下面。

我将替换文本字段文本中的"" (双引号)并在 json 请求参数中发送该文本,但下面的代码不起作用

NSString * mString = textfield.text; // Input through ipad/iphone/simulator keypad.

[mString replaceOccurrencesOfString:@"\"" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [mString length])];.

但是如果我硬编码NSString * mString = @"\\"test" ; // 通过 xcode 输入

replaceOccurrencesOfString:正在工作。

是双引号输入编码的问题吗?

为什么来自 ipad/iphone/模拟器键盘的双引号与 xcode 双引号的工作方式不同。

谢谢。

默认情况下,iOS 键盘使用“智能”引号...当您打开带引号的字符串部分时使用left double quotation mark ,关闭带引号的部分时使用right double quotation mark

所以要去掉这些,你需要替换双引号和左双引号和右双引号。

这是一个快速示例:

NSString *origString = _myTextField.text;
NSString *strippedString = [origString copy];

NSArray *replaceChars = @[@"”", @"“", @"\""];

for (NSString *c in replaceChars) {
    strippedString = [strippedString
                      stringByReplacingOccurrencesOfString:c
                      withString:@""];
}

NSLog(@"Orig: [%@] / Stripped: [%@]", origString, strippedString);

示例输出:

Orig: [“test”] / Stripped: [test]

您必须仔细观察,但您会看到左右双引号。


编辑

更简洁的方法:

NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"”“\""];
NSString *strippedString = [origString stringByTrimmingCharactersInSet:set];
NSLog(@"Orig: [%@] / Stripped: [%@]", origString, strippedString);

但是,正如 Sulthan 所指出的,您可能需要考虑其他语言的标点符号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM