NSStringの最初の3文字を取得する方法


回答:


263
 mystr=[mystr substringToIndex:3];

文字列が少なくとも3チャネルあることを確認してください。そうしないと、アプリがクラッシュします。

NSsting操作を確認するためのその他のリンクを次に示します...

リンク1

リンク2

アップルリンク


21
注:長さをチェックして3文字以上かどうかを確認しないと、「範囲外または範囲外のインデックス」エラーが発生する可能性があります
Ryan Bavetta

私は非常に新しいので、自分の質問に答えるためにこの質問を検索しましたが、この回答では最初の3文字が表示されませんか?同じ構文を使用して、設定した文字数を削除します。私はおそらく間違っていますが、少なくとも尋ねるべきだと思いました。

@RyanBavettaこれを行う文字列が、たとえば、コードが以前に作成した日付文字列であり、文字数が正確にわかっている場合はどうでしょうか。それなら確かに、どれだけ長いかを確認するためにif文を気にする必要はありませんよね?
Supertecnoboff 2015

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ブロックでラップします。それにもかかわらず、これは他より良い答えです。
アランZeino、2011年

2

正しい方法は:

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

NSStringのsubstringToIndexはコード単位でインデックスを作成し、絵文字は2つのコード単位を取ります。

自分でインデックスを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.