2013-09-17 2 views
0

Я хотел бы разделить часть NSString.Как вырезать часть NSString после первого экземпляра символа?

в следующей строке, я хотел бы просто взять цифры до «/ sampletext1/sampletext2/sampletext3»

1464/sampletext1/sampletext2/sampletext3 

Я уже раздел веб-адрес перед цифрами, но не может понять из остальных. Иногда цифры могут быть 3 или 4 или 5 цифр.

благодаря

+4

Вы имеете дело с URL? Если это так, вы можете конвертировать в NSURL и извлекать различные части: путь, хост, порт, строку запроса и т. Д. –

+0

В противном случае регулярные выражения являются хорошим подходом '@"^\\ d + "'. –

+0

Я закончил использовать: http://stackoverflow.com/questions/3692947/get-parts-of-a-nsurl-in-objective-c – user2588945

ответ

3

Вы упомянули, что вы извлекли веб-адрес из передней, так что я предполагаю, что вы имеете дело с или что-то вроде http://localhost:12345/a/b/c или http://localhost/12345/a/b/c.

В любом случае, вы можете преобразовать строку в NSURL и воспользоваться его встроенных функций:

// Port 
NSURL *URL = [NSURL URLWithString:@"http://localhost:12345/a/b/c"]; 
NSUInteger port = URL.port.integerValue; 

// Path component 
NSURL *URL = [NSURL URLWithString:@"http://localhost/12345/a/b/c"]; 
NSString *number = URL.pathComponents[1]; 
6

Получить индекс первого символа / затем получить подстроку до этого места.

NSString *stuff = @"1464/sampletext1/sampletext2/sampletext3"; 
NSString *digits; 
NSRange slashRange = [stuff rangeOfString:@"/"]; 
if (slashRange.location != NSNotFound) { 
    digits = [stuff substringToIndex:slashRange.location]; 
} else { 
    digits = stuff; 
} 
+0

спасибо. любая идея, почему я получил бы «инициализацию» NSRange * '(aka struct _NSRange) с несовместимым типом NSRange? – user2588945

+0

К сожалению, опечатка - не используйте указатель с переменной 'slashRange'. – rmaddy

0

Используйте регулярные выражения:

NSError *error; 
NSString *test = @"1464/sampletext1/sampletext2/sampletext3"; 
NSRegularExpression *aRegex = [NSRegularExpression regularExpressionWithPattern:@"^\\d+" 
                     options:NSRegularExpressionCaseInsensitive 
                      error:&error]; 

NSRange aRangeOfFirstMatch = [aRegex rangeOfFirstMatchInString:test options:0 range:NSMakeRange(0, [test length])]; 

if (aRangeOfFirstMatch.location != NSNotFound) { 
    NSString *matchedString = [test substringWithRange:aRangeOfFirstMatch]; 
    NSLog(@"matchedString = %@", matchedString); 
} 
Смежные вопросы