nsrange.location 不完全是麻烦 makerange 子字符串 ios 目标 c

Posted

技术标签:

【中文标题】nsrange.location 不完全是麻烦 makerange 子字符串 ios 目标 c【英文标题】:nsrange.location not exactly trouble makerange substring ios objective c 【发布时间】:2012-08-30 19:07:50 【问题描述】:

嗨,我有这个字符串 "data": [ "name": "Lorena Trujillo", "id": "500144123" , "name": "George Arcila", "id": "520311359" , "name": "Laura Victoria Mu\u00f1oz Rincon", "id": "528543677" , "name": "Camilo Andres Santacoloma Mejia", "id": "529547832" ],"paging" : “下一个”: “https://graph.facebook.com/537223119/friends?access_token=AAAAAAITEghMBAI7cZBdbAHt3ZC24esi4ZA6O6kFdwU1H0ekDmGQGRZCUZAVW3T6W6fzg50jHsdfsdfsfdsfdsfzdixf1RrTFLzV96ZBWXAZDZD&limit=5000&offset=5000&__after_id=1000456456455”

你需要提取 [ 和 ] 之间的子字符串,我使用下一个代码

NSRange startRange = [strFriends rangeOfString:@"["];
NSRange endRange = [strFriends rangeOfString:@"]"];
NSString *formData = [strFriends  substringWithRange:NSMakeRange(startRange.location,endRange.location)];
NSLog(@"this is the data %@",formData); 

结果是

[ "name": "Lorena Trujillo", "id": "500144123" , "name": "George Arcila", "id": "520311359" , "name": "Laura Victoria Mu\u00f1oz Rincon", "id": "528543677" , "name": "Camilo Andres Santacoloma Mejia", "id": "529547832" ],"pagin

知道为什么最后这些字符会出现,“非常感谢页面

【问题讨论】:

听起来你需要一个 JSON 解析器。 【参考方案1】:

这是因为startRange location 和endRange location 都指向字符串中的位置——但是 subStringWithRange 需要一个位置和一个长度——所以你需要计算你想要提取的字符串的长度。像这样:

NSUInteger dataLength = endrange.location - startRange.location;
NSString *formData = [strFriends  substringWithRange:NSMakeRange(startRange.location,dataLength)];

除此之外,您确实需要一个 JSON 解析器来解析 JSON。挑选出像这样的小子串将是一项繁重的工作并且很脆弱。

【讨论】:

绝对:使用 JSON 时,请使用 JSON 解析器。无论您使用哪种手写代码,我都需要两分钟的时间来生成您的代码无法正确处理的输入。答应的。贵公司的客户会发现困难的方法。不到两分钟。只是一个使用“Jim [Joe 最好的朋友]”作为自己名字的用户。【参考方案2】:

正如 cmets 中提到的 driis,您应该使用 JSON parser 来处理这些数据。要回答您的问题,您正在看到“页面”,因为范围有一个位置和一个长度,而不是 2 个位置。试试

NSMakeRange(startRange.location,endRange.location - startRange.location)

【讨论】:

以上是关于nsrange.location 不完全是麻烦 makerange 子字符串 ios 目标 c的主要内容,如果未能解决你的问题,请参考以下文章

sql怎么过滤两条完全相同的数据,就是两条相同的数据只显示一条,麻烦哪位帮忙解答一下,谢谢!

在字符串中查找数字并返回位置和长度

CUDA 内核和内存访问(一个内核不完全执行,下一个不启动)

图像旋转后显示不完全

前端完全分离和前端不完全分离

POJ 2063 完全背包