如何从NSString中捕获最后4个字符

时间:2011-07-06 04:25:03

标签: ios iphone swift nsstring nsrange

我接受来自NSString的{​​{1}}随机size并将其传递给我正在创建的方法,该方法仅捕获{{1}中输入的最后4个字符1}}。

我查看了UITextField类参考库,我发现的唯一真正的选项看起来就像我想做的那样

string

之前我使用过这个,但是静态参数'不会改变',但是对于这个实现,我想使用非静态参数,这些参数会根据进入的字符串的大小而改变。

到目前为止,这是我创建的方法,它从IBAction其他地方传递NSString

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange

4 个答案:

答案 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