как получить первые три символа NSString?

Ответы:

263
 mystr=[mystr substringToIndex:3];

Убедитесь, что в вашей строке есть хотя бы 3 канала. Это приведет к сбою приложения.

Вот еще несколько ссылок для проверки операций NSsting ...

Link1

Link2

Ссылка Apple

GameLoading
источник
21
примечание: ошибка «Диапазон или индекс вне границ» возможна, если вы не проверите длину, чтобы убедиться, что она состоит из 3 или более символов
Райан Баветта,
Я новичок и искал этот вопрос, чтобы попытаться ответить на свой собственный, но разве этот ответ не убирает первые 3 символа? Я использую тот же синтаксис, чтобы УДАЛИТЬ установленное вами количество символов. Я, наверное, ошибаюсь, но подумал, что надо хотя бы спросить.
@RyanBavetta Что, если строка, с которой вы это делаете, представляет собой, например, строку даты, которую ваш код создал ранее, и поэтому вы ТОЧНО знаете, сколько символов в ней содержится. Тогда, конечно, вам не нужно возиться с оператором if, чтобы проверить, сколько он длится, верно ??
Supertecnoboff
1
@GameLoading Я добавил код к вашему ответу, чтобы он не вылетал у новичков. Надеюсь, вы не против :)
iYoung
Просто используйте mystr = [mystr substringToIndex: MIN (mystr.length, 3)], чтобы избежать сбоев :-)
LaborEtArs
62

Во-первых, вы должны убедиться, что строка содержит как минимум 3 символа:

NSString *fullString = /* obtain from somewhere */;
NSString *prefix = nil;

if ([fullString length] >= 3)
    prefix = [fullString substringToIndex:3];
else
    prefix = fullString;

substringToIndex: вызовет исключение, если предоставленный вами индекс находится за пределами конца строки.

мечта
источник
5
Или заключите в блок @ try / @ catch. Тем не менее, это лучший ответ, чем другой.
Алан Зейно,
2

правильный путь:

text = [text substringToIndex:NSMaxRange([text rangeOfComposedCharacterSequenceAtIndex:2])];

substringToIndex в NSString индексируется по единицам кода, эмодзи занимает две единицы кода.

обязательно проверьте индекс самостоятельно.

вершина горы
источник