jak zdobyć pierwsze trzy znaki NSString?

104

Jak mogę zwrócić pierwsze trzy znaki NSString?

cgossain
źródło

Odpowiedzi:

263
 mystr=[mystr substringToIndex:3];

Upewnij się, że Twój ciąg ma co najmniej 3 kanały, ale spowoduje to awarię aplikacji.

Oto kilka innych linków do sprawdzania operacji NSsting ...

Link1

Link2

Apple Link

Ładowanie gry
źródło
21
uwaga: błąd „Zakres lub indeks poza granicami” możliwy, jeśli nie sprawdzisz długości, aby upewnić się, że ma 3 lub więcej znaków
Ryan Bavetta
Jestem bardzo nowy i szukałem tego pytania, aby odpowiedzieć na własne, ale czy ta odpowiedź nie usunie pierwszych 3 znaków? Używam tej samej składni, aby USUNĄĆ ustawioną liczbę znaków. Prawdopodobnie się mylę, ale pomyślałem, że powinienem przynajmniej zapytać.
@RyanBavetta A co, jeśli ciąg, z którym to robisz, jest na przykład ciągiem daty, który twój kod utworzył wcześniej, więc wiesz DOKŁADNIE, ile ma znaków. Wtedy na pewno nie musisz zawracać sobie głowy stwierdzeniem if, aby sprawdzić, jak długo to trwa, prawda?
Supertecnoboff
1
@GameLoading Dodałem kod do Twojej odpowiedzi, aby nie zawiesił się on dla początkujących. Mam nadzieję, że nie masz nic przeciwko :)
iYoung
Po prostu użyj mystr = [mystr substringToIndex: MIN (mystr.length, 3)], aby uniknąć awarii :-)
LaborEtArs
62

Najpierw musisz upewnić się, że ciąg zawiera co najmniej 3 znaki:

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

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

substringToIndex: zgłosi wyjątek, jeśli podany indeks znajduje się poza końcem ciągu.

dreamlax
źródło
5
Lub zawiń blok @ try / @ catch. Niemniej jest to lepsza odpowiedź niż druga.
Alan Zeino,
2

właściwa droga to:

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

substringToIndex z NSString to indeksowanie według jednostki kodu, emoji zajmuje dwie jednostki kodu.

upewnij się, że sam sprawdź indeks.

szczyt
źródło