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怎么过滤两条完全相同的数据,就是两条相同的数据只显示一条,麻烦哪位帮忙解答一下,谢谢!