【问题标题】: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”?字符串文字?控制台输出?手工制作的东西?

标签: iphone ios objective-c nsstring


【解决方案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\" 中删除\?”的回答,而不是解决问题的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-19
        • 1970-01-01
        • 1970-01-01
        • 2018-05-26
        相关资源
        最近更新 更多