jak zdobyć pierwsze trzy znaki NSString?


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


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.