这似乎是我正在寻找的,但相反。我希望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语句更好的方法吗?
由于您不确定字符串的长度,因此必须在像这样提取之前检查它:
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]);
NSString *source = @"0123456789";
NSString *newString = [source substringFromIndex:[source length] - 4];
NSLog(@"%@",newString);
replace
NSString *lastFour = [source substringToIndex:-4];
NSString *lastFour = [source substringFromIndex:[source length] - 4];
返回lastFour string
中原始字符串string
的最后4个字符。
您可以使用以下代码从字符串中获取最后4个字符。
NSString *last4Characters = [source substringFromIndex:(source.length - 4)];
NSLog(@"Last 4 Characters:%@",last4Characters);
last4Characters=nil;
如果有什么问题请告诉我