如何从目标 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\" 中删除 \?的主要内容,如果未能解决你的问题,请参考以下文章