我接受来自NSString
的{{1}}随机size
并将其传递给我正在创建的方法,该方法仅捕获{{1}中输入的最后4个字符1}}。
我查看了UITextField
类参考库,我发现的唯一真正的选项看起来就像我想做的那样
string
之前我使用过这个,但是静态参数'不会改变',但是对于这个实现,我想使用非静态参数,这些参数会根据进入的字符串的大小而改变。
到目前为止,这是我创建的方法,它从IBAction其他地方传递NSString
。
- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
答案 0 :(得分:93)
使用substringFromIndex方法
<强> OBJ-C:强>
NSString *trimmedString=[string substringFromIndex:MAX((int)[string length]-4, 0)]; //in case string is less than 4 characters long.
<强> SWIFT:强>
let trimmedString: String = (s as NSString).substringFromIndex(max(s.length-4,0))
答案 1 :(得分:9)
试试这个,
NSString *lastFourChar = [yourNewString substringFromIndex:[yourNewString length] - 4];
答案 2 :(得分:0)
KingOfBliss提供的Swift答案对我来说是一个错误,因为XCode 7.3,并且由于桥接到NS类而不应该继续使用,这应该在Swift 3.0中删除。
考虑无效范围的更好示例,以及特殊字符提供正确删除位置的可能性:
有问题的字符串:Voulez-vousuncafé?
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
的答案。
通过使用start&amp ;;访问字符串结束索引值,可以防止并非所有字符都具有相同的大小(例如:\u{65}\u{301}
)
答案 3 :(得分:0)
您可以在Swift 5中检查此功能:
func subString(from myString: NSString, length: Int) {
let myNSRange = NSRange(location: myString.length - length, length: length)
print(myString.substring(with: myNSRange))
}
subString(from: "Menaim solved the issue", length: 4) // Output: ssue