0

現在、以下のコードを使用して部分文字列を取得しています

NSString *s1 = [stringName substringWithRange: NSMakeRange(0, 2)];

NSString *s2 = [stringName substringWithRange: NSMakeRange(2, 4)];

NSString *s3 = [stringName substringWithRange: NSMakeRange(6, [stringName length])];

ここで、範囲が有効かどうかを確認する方法は、時間によって異なる可能性があるため、検証する文字列の長さを確認できないためです。この問題で私を助けてください..

4

2 に答える 2

1

の場合s3、位置から開始し、文字列に含まれる文字数と正確に同じ数を要求します。しかし、6 位から開始しているため、6 文字を要求しすぎています。あなたがする必要があります:

NSString *s3 = [stringName substringWithRange: NSMakeRange(6, [stringName length] - 6)];
于 2011-04-15T07:21:29.817 に答える
1

アップルのドキュメントが言うように..

substringWithRange:

指定された範囲内にある受信者の文字を含む文字列オブジェクトを返します。

- (NSString *)substringWithRange:(NSRange)aRange

範囲

A range. The range must not exceed the bounds of the receiver.

NSMakeRange() を構築するたびに、指定した範囲が文字列の長さ内にあるかどうかを確認する必要があります...いくつかのif and else条件を使用して

于 2011-04-15T07:25:49.257 に答える