1

これは私が探しているもののようですが、逆です。string左からではなく右から抽出したいと思います。左から抽出する例を次に示します。

NSString *source = @"0123456789";
NSString *firstFour = [source substringToIndex:4];

Output: "0123"

右から動作する以下のバージョンを探しています (以下のものは動作しません)

NSString *source = @"0123456789";
NSString *lastFour = [source substringToIndex:-4];

Output: "6789"

[source substringFromIndex:6];000123456789、456789、または 6789 という回答が得られることがあるため、これは機能しません。どの場合でも、文字列の最後の 4 文字が必要なので、数値に変換できます。

if else ステートメントの束よりも良い方法があるに違いありませんか?

4

4 に答える 4

3

文字列の長さがわからないので、次のように抽出する前に確認する必要があります。

NSString *source = @"0123456789";
NSNumber *number;
if (source.length>=4) {
    NSString *lastFour=[source substringFromIndex:source.length-4];
    number=@([lastFour integerValue]); //and save it in a number, it can be int or NSInteger as per your need
}
NSLog(@"%@",number);

また、何度も呼び出す必要がある簡単なメソッドが必要な場合は、カテゴリを作成します。

@implementation NSString (SubstringFromRight)
-(NSString *)substringFromRight:(NSUInteger)from{
    if (self.length<from) {
        return nil;
    }        
    return [self substringFromIndex:self.length-from];
}
@end

そしてそれを次のように使用します:NSLog(@"%@",[source1 substringFromRight:4]);

于 2013-03-18T07:00:24.853 に答える
0
NSString *source = @"0123456789";
NSString *newString = [source substringFromIndex:[source length] - 4];

NSLog(@"%@",newString);
于 2013-03-18T06:49:02.357 に答える
0

交換

NSString *lastFour = [source substringToIndex:-4];

NSString *lastFour = [source substringFromIndex:[source length] - 4];

stringこれにより、元の文字列の最後の4文字が返されますlastFour string

于 2013-03-18T06:49:29.313 に答える
0

次のコードを使用して、文字列から最後の 4 文字を取得できます。

NSString *last4Characters = [source substringFromIndex:(source.length - 4)];
NSLog(@"Last 4 Characters:%@",last4Characters);
last4Characters=nil;

何か問題があればお知らせください。

于 2013-03-18T07:15:55.927 に答える