我收到一个请求数据并将其放入NSString中。之后,我得到以下字符串,
_ VIEWSTATE =%2FwEPDwULLTE1MjI5NTA5MzBkZBfGgdOVhk6K8WsSgq64ngCpAncw&安培; _EVENTVALIDATION =%2FwEWBgKdhbkbAvOQn7cGApKGyNkMAsKL2t4DApSbgLYHArS6otoP2nSQkmm0E6zJe2u91W5ntimqJ18%3D&安培; X - 轮辋队列-ID = MyOfflineQueue&安培; form_id = 723&安培; TXT2 = siddhesh.b.chavan%40gmail.com&安培; btnSubmit按钮=提交&安培; X-rim1-request1标题= SignatureShouldBeDoneHere&安培; X - 轮辋请求所有权= iPhone3的+ 4%2F6%2F2011 + 3%3A57 3A21%+ AM
我要问的是,我想从这个字符串中获取“form_id”,即“723”。 那么,我该怎么做? 我想每次都获得一个请求的form_ID。所以,请帮助我解决这个问题。
感谢你。
答案 0 :(得分:2)
这些选项更适用于您尝试执行的URL参数解析。
请参阅rangeOfString:
及其有关NSString文档的朋友
由于它是一个URL参数样式字符串,因此可以通过分割&
和=
轻松解析,可以使用componentsSeparatedByString:
或componentsSeparatedByCharactersInSet:
正则表达式是操作文本的最佳选择,但它们比以前的解决方案更难以使用/学习。要使用正则表达式,我建议两个选项:
iPhone OS> = 3.2有正则表达式:
NSString rangeOfString:options:NSRegularExpressionSearch
但这与选项1接近。
NSURL
支持URL参数,用于解析和构建网址......但事实并非如此。我忘了提及我从未真正研究过的NSScanner
(坏我)
更一般地说,Apple documentation on this topic很有意思。
答案 1 :(得分:0)
试试这个:
[myString substringToIndex:index];
[myString substringFromIndex:index];
[myString substringWithRange:range];
或者
if ( [yourString rangeOfString:@"form_id"].location == NSNotFound )
{
NSLog(@"form_id not found");
}
答案 2 :(得分:0)
使用'rangeOfString:options:range:'首先搜索整个字符串中的“form_id =”,然后从找到的位置搜索“&”。您将需要处理未找到&符号的情况(当form_id是列表中的最后一个时)。
答案 3 :(得分:0)
如果你想尝试这个:让我知道它是否有效。
NSInteger formId;
//separate the whole string first by "&" characters
NSArray *array = [myString componentsSeparatedByString:@"&"];
for (NSString *queryString in array)
{
//for every separated string, look if you have the "form_id" key
NSRange range = [queryString rangeOfString:@"form_id=" options:NSLiteralSearch];
if (range.location != NSNotFound)
{
NSLog(@"form_id query string does exist");
//form_id= has 7 characters, pick the character which comes after the "=" sign.
NSString *value = [queryString substringFromIndex:8];
formId = [value integerValue];
}
}
该解决方案假设您只有1“form_id”。
答案 4 :(得分:0)
您也可以使用NSScanner对象。喜欢 -
NSScanner *scanner = [NSScanner scannerWithString:reqData];
[scanner scanUpToString:@"form_id" intoString:nil];
[scanner scanUpToString:@"&" intoString:&strObj];
valueStr = [strObj substringFromIndex:1];