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

您可以使用以下代码从字符串中获取最后 4 个字符。

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

如果有任何问题,请告诉我。

于 2013-03-18T07:15:55.927 回答
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];

它将返回原始字符串的最后 4 个string字符lastFour string

于 2013-03-18T06:49:29.313 回答