Answers:
在您的控制器类中,创建一个操作方法,您将在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 != nil && [string length] > 0
。很有可能是Donal的字符串变量被过度释放。
此处给出的解决方案实际上并未考虑多字节Unicode字符(“组合字符”),并可能导致无效的Unicode字符串。
实际上,包含声明的iOS头文件substringToIndex
包含以下注释:
提示:与rangeOfComposedCharacterSequencesForRange一起使用:避免破坏合成字符
了解如何rangeOfComposedCharacterSequenceAtIndex:
正确删除最后一个字符。
文档是您的朋友,NSString
支持substringWithRange
可以缩短字符串的调用,您可以返回缩短的字符串。您不能修改NSString
其不可变的实例。如果您有一个NSMutableString
is方法deleteCharactersInRange
,该方法可以修改字符串
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
返回NSString*
。注意指针。