如何从NSString中捕获最后4个字符
我从UITextField
接受一个随机size
的NSString
,并将它传递给我创build的方法,该方法将只捕获在string
input的最后4个字符。
我已经通过NSString
类参考库看,唯一真正的select,我发现,看起来像它会做我想要的是
- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
我曾经使用过一次,但有静态参数'不会改变',但是对于这个实现,我想要使用非静态参数,这取决于进入的string的大小。
到目前为止,这是我创build的方法是从IBAction其他地方传递一个NSString
。
- (void)padString:(NSString *)funcString { NSString *myFormattedString = [NSString stringWithFormat:@"%04d",[funcString intValue]]; // if less than 4 then pad string // NSLog(@"my formatedstring = %@", myFormattedString); int stringLength = [myFormattedString length]; // captures length of string maybe I can use this on NSRange? //NSRange MyOneRange = {0, 1}; //<<-------- should I use this? if so how? }
使用substringFromIndex方法,
OBJ-C:
NSString *trimmedString=[string substringFromIndex:MAX((int)[string length]-4, 0)]; //in case string is less than 4 characters long.
迅速:
let trimmedString: String = (s as NSString).substringFromIndex(max(s.length-4,0))
尝试这个,
NSString *lastFourChar = [yourNewString substringFromIndex:[yourNewString length] - 4];
KingOfBliss提供的Swift答案在XCode 7.3中对我产生了一个错误,由于桥接到NS类,所以不应该继续使用,这应该在Swift 3.0中删除。
一个更好的例子,认为一个无效的范围,以及特殊字符的可能性,以提供正确的位置删除:
有问题的string:Voulez-vous uncafé?
var trimmedString = "Voulez-vous un caf\u{65}\u{301}?" let stringSize = trimmedString.characters.count let startIndex = 4 if stringSize >= startIndex { let range = trimmedString.endIndex.advancedBy(-startIndex)..<trimmedString.endIndex trimmedString.removeRange(range) }
这将产生Voulez-vous un c
的答案。
通过访问具有开始和结束索引值的string,可以防止不是所有字符的大小相同(例如: \u{65}\u{301}
)