iPhone: Разбор целых чисел из NSURL / NSString (NSScanner?) - PullRequest
2 голосов
/ 10 февраля 2010

Я пытаюсь создать приложение для iPhone, в котором я читаю RSS-канал и должен проанализировать идентификатор статьи по URL Ссылки, предоставляемые RSS-каналом, выглядят следующим образом: http://example.com/variable/path/components/352343/index.html

Мне нужно 352343.

Так что в основном мне нужно искать хотя бы одну цифру между слешами (компоненты пути также могут содержать цифры) Регулярное выражение будет легко: "// (\ d +) //". Но как я могу сделать это с NSScanner?

Спасибо, Эрнесто

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

Вы можете разбить строку URL на части, разделенные символом "/", и проверить, является ли какая-либо часть действительным целым числом.

NSArray* components = [urlString componentsSeparatedByString:@"/"];
int myId;
for (NSString *comp in components){
   NSScanner *scanner = [NSScanner scannerWithString:comp];
   if ([scanner scanInt: &myId])
       return myId; 
}

или вы можете просто использовать метод NSString:

int myId;
for (NSString *comp in components)
   if (myId = [comp intValue]) // intValue returns 0 if comp is not an integer
      return myId;
1 голос
/ 10 февраля 2010

Вам необходимо использовать его в сочетании с набором символов.

NSCharacterSet *charSet = [NSCharacterSet decimalDigitCharacterSet];
NSScanner *scanner = [NSScanner scannerWithString:url];
[scanner scanUpToCharactersFromSet:charSet intoString:nil];
int urlId;
[scanner scanInt:&urlId];    

Конечно, это только в том случае, если вы знаете, что числа не будут появляться в URL-пути до идентификатора. Если бы они могли, вам нужно было бы быть немного более надежным, чем этот, но вы могли бы использовать этот фрагмент в качестве отправной точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...