URL для разбора iPhone на GET-параметры - PullRequest
7 голосов
/ 11 февраля 2010

У меня есть строка, полученная при разборе XML-сайта.

http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500

Я хочу иметь функцию NSString, которая сможет анализировать значение c. Есть ли функция по умолчанию или мне нужно написать ее вручную.

Ответы [ 4 ]

22 голосов
/ 11 февраля 2010

Вы можете использовать регулярные выражения через RegExKit Lite: http://regexkit.sourceforge.net/RegexKitLite/

Или вы можете разделить строку на компоненты (что не так приятно):

NSString *url=@"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500";
NSArray *comp1 = [url componentsSeparatedByString:@"?"];
NSString *query = [comp1 lastObject];
NSArray *queryElements = [query componentsSeparatedByString:@"&"];
for (NSString *element in queryElements) {
    NSArray *keyVal = [element componentsSeparatedByString:@"="];
    if (keyVal.count > 0) {
       NSString *variableKey = [keyVal objectAtIndex:0];
       NSString *value = (keyVal.count == 2) ? [keyVal lastObject] : nil;
    }
}
6 голосов
/ 13 февраля 2010

Я создал класс, который выполняет этот анализ для вас, используя NSScanner, в качестве ответа на тот же вопрос несколько дней назад. Вы можете найти это полезным.

Вы можете легко использовать его как:

    URLParser *parser = [[[URLParser alloc] initWithURLString:@"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500"] autorelease];
    NSString *c = [parser valueForVariable:@"c"];   //c=500
0 голосов
/ 22 мая 2018

Вот родной подход iOS, использующий классы NSURLComponents и NSURLQueryItem:

NSString *theURLString = @"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500";    
NSArray<NSURLQueryItem *> *theQueryItemsArray = [NSURLComponents componentsWithString:theURLString].queryItems;
for (NSURLQueryItem *theQueryItem in theQueryItemsArray)
{
    NSLog(@"%@ %@", theQueryItem.name, theQueryItem.value);
}
0 голосов
/ 11 февраля 2010

Попробуйте следующее:

NSURL *url = [NSURL URLWithString:@"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500"];
NSMutableString *parameterString = [NSMutableString stringWithFormat:@"{%@;}",[url parameterString]];
[parameterString replaceOccurrencesOfString:@"&" withString:@";"];
// Convert string into Dictionary
NSPropertyListFormat format;
NSString *error;    
NSDictionary *paramDict = [NSPropertyListSerialization propertyListFromData:[parameterString dataUsingEncoding:NSUTF8StringEncoding] mutabilityOption: NSPropertyListImmutable format:&format errorDescription:&error];

// Now take the parameter you want
NSString *value = [paramDict valueForKey:@"c"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...