Поиск слова в строке NSString - PullRequest
       1

Поиск слова в строке NSString

2 голосов
/ 06 апреля 2011

Я получаю данные запроса и помещаю их в NSString. после этого я получаю следующую строку,

_ VIEWSTATE =% 2FwEPDwULLTE1MjI5NTA5MzBkZBfGgdOVhk6K8WsSgq64ngCpAncw & _EVENTVALIDATION =% 2FwEWBgKdhbkbAvOQn7cGApKGyNkMAsKL2t4DApSbgLYHArS6otoP2nSQkmm0E6zJe2u91W5ntimqJ18% 3D & х-рим-очереди-ID = MyOfflineQueue & form_id = 723 & txt2 = siddhesh.b.chavan% 40gmail.com & btnSubmit = Submit & х-rim1-request1-название = SignatureShouldBeDoneHere & х -rim-запроса название = iPhone3 + 4% 2F6% 2F2011 + 3% 3A57% 3A21 + AM

Я должен спросить, я хочу получить "form_id" из этой строки "723". итак, как мне это получить ?? Я хочу получить form_ID для запроса каждый раз. Так что, будь добр, помоги мне с этим.

Благодарю вас.

Ответы [ 5 ]

2 голосов
/ 06 апреля 2011

Эти параметры больше предназначены для разбора аргументов URL, который вы пытаетесь сделать.

1. Диапазон поиска: по слову, символу

самый эффективный, но может быть разборчивым в написании ... (и читать!)

См. rangeOfString: и его друзей по документации NSString

2. Split

быстро и элегантно писать, но не так эффективно

Поскольку это строка в стиле аргумента URL, ее легко разобрать, разделив на & и =, что можно легко сделать с помощью componentsSeparatedByString: или componentsSeparatedByCharactersInSet:

3. Регулярные выражения

чистый код, мощный

Регулярные выражения являются лучшим выбором для манипулирования текстом, но их может быть сложнее использовать / изучать, чем предыдущие решения. Для использования регулярных выражений я предлагаю два варианта:

  1. iPhone OS> = 3.2 имеет регулярные выражения:

    NSString rangeOfString:options:NSRegularExpressionSearch

    Но это близко к варианту 1.

  2. RegexKitLit , с отличным механизмом регулярных выражений на OSX / iOS, предоставит, imho, лучшее и наиболее мощное решение вашей проблемы (и многих других !!!) ...

4. Другие комплекты / API / SDK

отсутствует API / инструментарий / SDK? не пишите код, тысячи людей уже написали ...

  1. Я хотел бы, чтобы NSURL поддерживал аргументы URL для анализа и построения URL-адресов ... но это не так.
  2. Я не знаю хорошей библиотеки разбора URL / набора инструментов, которая бы предлагала такие инструменты манипулирования аргументами URL (Google Toolbox не предоставляет такие инструменты аргументов URL за исключением экранирования , которое уже действительно полезно), но я ' я уверен, что существует! И хорошая библиотека с проверенным и надежным кодом наверняка станет вашим лучшим решением ...

5. Другие ... их много

Я забыл упомянуть NSScanner, который я никогда не изучал (плохо меня) В общем, Интересна документация Apple по этой теме .

0 голосов
/ 06 апреля 2011

Вы также можете использовать объект NSScanner. Like-

NSScanner *scanner = [NSScanner scannerWithString:reqData];  
[scanner scanUpToString:@"form_id" intoString:nil];  
[scanner scanUpToString:@"&" intoString:&strObj];  
valueStr = [strObj substringFromIndex:1]; 
0 голосов
/ 06 апреля 2011

, если вы хотите попробовать это: дайте мне знать, если это работает.

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".

0 голосов
/ 06 апреля 2011

Используйте 'rangeOfString: options: range:', начните с поиска во всей строке слова "form_id =", а затем найдите, где было найдено "&".Вам нужно будет обработать случай, когда амперсанд не найден (когда form_id является последним в списке).

0 голосов
/ 06 апреля 2011

Попробуйте это:

[myString substringToIndex:index];
[myString substringFromIndex:index];
[myString substringWithRange:range];

Или

if ( [yourString rangeOfString:@"form_id"].location == NSNotFound )
{
NSLog(@"form_id not found");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...