#iphone #objective-c #cocoa-touch #string #nsstring
#iPhone #objective-c #cocoa-touch #строка #nsstring
Вопрос:
Есть строка.
NSString * test = @»1997#test»
Я хочу удалить строку перед «#».
И это меняется следующим образом :
NSString * test = @»test»
Вы можете мне помочь?
Комментарии:
1. Будет ли в строке когда-либо только один символ хэша / фунта (#)?
Ответ №1:
Используя стандартные методы NSString API:
NSString* test = @"1997#test";
NSArray* parts = [test componentsSeparatedByString:@"#"];
NSString* result = [parts count] > 1 ? [parts objectAtIndex: 1] : [parts objectAtIndex: 0];
Или, если это слишком тупо (что лично я считаю таковым), вы можете использовать категорию NSString JavaAPI, а затем выполнить:
NSString* test = @"1997#test";
NSString* result = [test substringFromIndex: [test indexOf:@"#"] 1];
Ответ №2:
Технически удаление строки перед #
оставило бы вас с «#test».
В любом случае, используйте - [NSString componentsSeparatedByString:]
:
test = [[test componentsSeparatedByString:@"#"] lastObject];
Обратите внимание, что этот подход хрупок: если у вас есть 2 #
, вы получите только последнюю часть, например «foo» из «abc #bar #foo».
Использование lastObject
вместо objectAtIndex:
означает, что если в строке нет #
, то вы получаете исходную строку вместо сбоя.
Ответ №3:
Не говорю, что это лучше, чем другие способы, но мне было любопытно посмотреть, смогу ли я сделать это без componentsSeparatedByString и objectAtIndex.
NSString* oldString = @"1976#test";
int stringLocation = [oldString rangeOfString:@"#" ].location 1 ;
NSString* newString =[oldString substringWithRange: NSMakeRange (stringLocation,[oldString length] - stringLocation )];
Ответ №4:
NSArray *components=[test componentsSeparatedByString:@"#"];
NSString *test=[components objectAtIndex:1];
это поможет вам
Комментарии:
1. В вашем фрагменте кода небольшая опечатка. («NSSting» вместо NSString во второй строке.) 🙂
Ответ №5:
Если в строке будет только один символ хэша, вы могли бы просто использовать метод NSString componentsSeparatedByString
для возврата массива, а затем просто вставить первый элемент массива в строку.
Например:
NSString *test = @"1997#test";
NSArray *stringComponents = [test componentsSeparatedByString:@"#"];
NSString *test = [stringComponents objectAtIndex:1];
Ответ №6:
NSString * test = @»Четан#iPhone#тест»;
NSArray *stringComponents = [тестовые компоненты, разделенные строкой:@»#»];
for (int i = 0; i < [Количество строковых компонентов]; i )
{
NSString *test = [stringComponents objectAtIndex:i];
if ([test isEqualToString:@"test"] == true)
{
NSLog(@"found");
break;
}
}