【问题标题】:Replace newline character in JSON NSString替换 JSON NSString 中的换行符
【发布时间】:2011-06-19 22:18:02
【问题描述】:

我一头撞在墙上,决定和你们一起检查一下。

我有以下 JSON 数据作为 NSString:

{
    "PATIENTID": "51853",
    "MSWREFERRAL": " ",
    "TIMEIN": " ",
    "PRECAUTIONOTHERNOTE1": " ",
    "AGE": "70",
    "SAFETY2": " ",
    "VISITTYPE": " ",
    "RAMP": " ",
    "BANNISTER": " ",
    "CREATETIMESTAMP": "1308519326",
    "SAFETY1": " ",
    "AGENCYNAME": "RESPONSE HOME CARE",
    "STAIRS": " ",
    "AGENCYID": "415",
    "GUID": "845A481E-8F54-4737-9F55-05FD10E3B931",
    "ASSIST": " ",
    "EVALDATE": "06/19/2011",
    "PULMONARY": "NO",
    "DOB": "01/17/1941",
    "GENDER": " ",
    "STATUS": "pending",
    "SETTING": " ",
    "CATHETER": "NO",
    "PRECAUTIONOTHER1": "NO",
    "RECENTEVENTS": "*test\n*newline",
    "PTTIME": "",
    "TYPE": "eval",
    "PATIENTNAME": "Gloria Gordon",
    "CARDIAC": "NO",
    "PRECAUTION": "NO",
    "VISITNUM": "1",
    "PRECAUTIONOTHERNOTE2": " ",
    "SHUNT": "NO",
    "WB": "NO",
    "FALL": "NO",
    "PRECAUTIONOTHER2": "NO",
    "LIVES": " ",
    "THERAPIST": "Bernard George KATZ, PT",
    "PAID": " ",
    "PASTMEDHX": " "
}

我需要删除 *test 和 *newline 之间的 /n 或使用 //n 对其进行编码。我已经尝试了我能想到的一切,但无法替换字符串。

到目前为止我已经尝试过:

  • replaceOccurrencesOfString:@"\n" withString:@""
  • stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet

似乎由于某种原因,JSON 的格式正在绊倒 NSString 方法。更有可能是我在做一些愚蠢的事情。

感谢您的帮助。

【问题讨论】:

  • 您能否确认您理解正斜杠和反斜杠之间的区别,并且您的意思是以您的方式提问?
  • 这是一个愚蠢的错字。我正在尝试替换 \n 而不是 /n。
  • ...希望格洛丽亚·戈登是个测试人...

标签: objective-c json nsstring


【解决方案1】:

-stringByTrimmingCharactersInSet: 只删除它发送到的字符串的头部和尾部的字符。它会修剪,不会搜索和替换。

【讨论】:

    【解决方案2】:

    在这种情况下,\n 不是指每个逗号后的换行符吗?

    您可能想要替换 \\n(文字字符而不是换行符)

    replaceOccurrencesOfString:@"\\n" withString:@""
    

    【讨论】:

      【解决方案3】:

      很难确定您的问题是什么,但我认为您想获取字符串:"*test\n*newline" 并将其替换为 "*test\\n*newline" 以便字符 \ 将被 JSON 解析器接受?

      为此:

      NSString *str = @"*test\n*newline";
      NSLog(@"First log %@",str);
      str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];
      NSLog(@"Second log %@",str);
      

      输出如下

      First log = *test
      *newline 
      Second log = *test\n*newline
      

      在这里您可以看到在第一个日志中您有一个\n,它被打印为一个新行。在第二个日志中,您有一个\\n,它打印为\n,因为转义字符\ 被转义,因此只是打印出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-24
        • 1970-01-01
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多