在用于 iOS 的 Objective-C 中,如何使用按钮操作删除字符串的最后一个字符?
文档是你的朋友,NSString支持一个调用 substringWithRange,可以缩短字符串,你有一个返回缩短字符串。您不能修改 NSString的实例,因为它是不可变的。如果你有一个 NSMutableString是有一个方法称为 deleteCharactersInRange,可以修改字符串的地方
NSString
substringWithRange
NSMutableString
deleteCharactersInRange
... NSRange r; r.location = 0; r.size = [mutable length]-1; NSString* shorted = [stringValue substringWithRange:r]; ...
在您的控制器类中,创建一个操作方法,将按钮挂接到 Interface Builder。在这个方法中,你可以像这样修剪你的字符串:
if ([string length] > 0) { string = [string substringToIndex:[string length] - 1]; } else { //no characters to delete... attempting to do so will result in a crash }
如果你想用一行代码来完成这件事,你可以这样写:
string = [string substringToIndex:string.length-(string.length>0)];
* 解释奇特的一行代码片段: 如果有一个字符要删除(即字符串的长度大于0) (string.length>0)返回 1,从而使代码返回: string = [string substringToIndex:string.length-1]; 如果没有要删除的字符(即字符串的长度不大于0) (string.length>0)返回 0,从而使代码返回: string = [string substringToIndex:string.length-0]; 防止崩溃。
(string.length>0)
1
string = [string substringToIndex:string.length-1];
0
string = [string substringToIndex:string.length-0];
如果它是一个 NSMutableString (因为要动态更改它,所以我建议使用它) ,您可以使用:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
这里给出的解决方案实际上没有考虑到多字节 Unicode 字符(“组合字符”) ,可能导致 Unicode 字符串无效。
事实上,包含 substringToIndex声明的 iOS 头文件包含以下注释:
substringToIndex
提示: 与 rangeOfComposedCharterSequencesForRange 一起使用: 以避免拆分组合字符
请参阅 如何使用 rangeOfComposedCharacterSequenceAtIndex:以正确删除最后一个字符。
rangeOfComposedCharacterSequenceAtIndex: