如何从目标 c 中的单词 \"hello\" 中删除 \?

Posted

技术标签:

【中文标题】如何从目标 c 中的单词 \\"hello\\" 中删除 \\?【英文标题】:how to remove \ from a word \"hello\" in objective c?如何从目标 c 中的单词 \"hello\" 中删除 \? 【发布时间】:2013-10-17 09:25:29 【问题描述】:

我从 web 服务获取数据为 json,但问题是 json 带有所有“带有 \ 即“all”作为 \"all\"

如何使它成为有效的 json 和字典?


    GetDataResult = "[\"www\":\"0\":\"ID\":\"10233\",\"Queue\":\"COMPLETED\",\"EstCommName\":\"\U062e\U0631\U0645 \U0644\U0644\U0627\U0644\U0648\U0645\U0646\U064a\U0648\U0645 \U0648\U0627\U0644\U0632\U062c\U0627\U062c\",\"ReturnTime\":\"\",\"Latitude\":\"\",\"Longitude\":\"\",\"1\":\"ID\":\"10304\",\"Queue\":\"COMPLETED\",\"EstCommName\":\"\U0627\U062d\U0645\U062f \U0627\U0644\U0643\U0646\U062f\U064a \U0644\U0644\U0627\U0644\U0645\U0648\U0646\U064a\U0648\U0645 \U0648\U0627\U0644\U0632\U062c\U0627\U062c\",\"ReturnTime\":\"\",\"Latitude\":\"\",\"Longitude\":\"\",\"2\":\"ID\":\"10667\",\"Queue\":\"FRESH\",\"EstCommName\":\"\U0645\U0646\U062c\U0631\U0629 \U0627\U0644\U062e\U0632\U0646\U0629\",\"ReturnTime\":\"\",\"Latitude\":\"\",\"Longitude\":\"\",\"3\":\"ID\":\"10777\",\"Queue\":\"FRESH\",\"EstCommName\":\"\U0645\U0624\U0633\U0633\U0647 \U062c\U0647\U0627\U0645 \U0644\U0627\U0639\U0645\U0627\U0644 \U0627\U0644\U0633\U064a\U0631\U0627\U0645\U064a\U0643\",\"ReturnTime\":\"\",\"Latitude\":\"\",\"Longitude\":\"\",\"asd\":,\"ssd\":]";

换句话说

TLDR

如何从单词\"hello\"中删除\。?即需要的输出是“hello”。

我尝试了什么

     NSLog(@"%@",[[op objectForKey:@"GetSampleDataResult"] stringByReplacingOccurrencesOfString:@"\"" withString:@""]);

【问题讨论】:

您还必须使用NSJSONSerialization 代替GetDataResult 你正在用“”替换“”尝试用“”替换\。即NSLog(@"%@",[[op objectForKey:@"GetSampleDataResult"] stringByReplacingOccurrencesOfString:@"\\" withString:@""]); 什么是“GetDataResult”?字符串文字?控制台输出?手工制作的东西? 【参考方案1】:

我还没有尝试过,但是这样的东西可以为你工作。

示例代码:

NSString *yourString = [yourJSON objectForKey:@"GetDataResult"];
NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSArray *www = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSLog(@"www :: %@",www);

【讨论】:

这不是转换字符串的方法 所以问题不在于\"。问题是,当您打印出 JSON 字符串时,output 包含那些转义,而不是 actual 字符串。 现在看起来是正确的,并且使用 NSJSONSerialization 比任何字符串操作都要好,因为嵌套 JSON 中的字符串可能已经转义了引号或冒号 ... 顺便说一下,那个 JSON 字符串包含 Array 作为根类型。你使用了NSDictionary @iMartin:是的。谢谢指正。我将其更新为NSArray【参考方案2】:

我尝试如下:--

NSString *word= @"'\'hello'\'";
    NSArray *arr=[word componentsSeparatedByString:@"'\'"];
    for (NSString *str in arr)
    
        if ([str length] >0)
        
        NSLog(@"%@",str);
        
    

【讨论】:

【参考方案3】:

从我的头顶开始,要替换 \" 您需要将其指定为 \\\"

原因是 \ 本身被用作转义字符,因此您需要转义:

\ 带 \\ " 与 \"

但是引号是必需的,所以你需要摆脱 \ 所以这个:

NSLog(@"%@",[[op objectForKey:@"GetSampleDataResult"]
             stringByReplacingOccurrencesOfString:@"\\"
             withString:@""]);

但如前所述,NSJSONSerialization 是解决此问题的最佳方法

【讨论】:

【参考方案4】:
[string stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""];

注意引号和反斜杠。

\\\" 的结果将是 \",这正是您需要找到的。 \" 的结果将是",正是您需要替换的。

编辑:这是对“如何从单词\"hello\" 中删除\?”的回答,而不是解决问题的方法。

【讨论】:

以上是关于如何从目标 c 中的单词 \"hello\" 中删除 \?的主要内容,如果未能解决你的问题,请参考以下文章

如何在目标c中的多个标签上显示文本文件中的随机单词

c语言中如何输入双引号

底层原理:深入理解计算机系统#2 一切从"hello world"说起

如何从 Linux 中的另一个进程触发一个进程?

在c ++中将单词拆分为字母? [关闭]

C语言题目:输入一行字符,将此字符串中最大的单词输出