Objective C – 删除string中的最后一个字符
在iPhone的Objective C中,我将如何使用button操作删除string的最后一个字符。
在您的控制器类中,创build一个操作方法,您将在界面生成器中将button挂起。 在这个方法里面你可以像这样修剪你的string:
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)];
*花式单行代码片段的解释:
如果有一个要删除的字符(即string的长度大于0)
(string.length>0)
返回1
从而使代码返回:
string = [string substringToIndex:string.length-1];
如果没有要删除的字符(即string的长度不大于0)
(string.length>0)
返回0
从而使代码返回:
string = [string substringToIndex:string.length-0];
这可以防止崩溃。
如果它是一个NSMutableString(我会build议,因为你dynamic地改变它),你可以使用:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
这里给出的解决scheme实际上不考虑多字节Unicode字符(“组合字符”),并可能导致无效的Unicodestring。
实际上,包含substringToIndex
声明的iOS头文件包含以下注释:
提示:与rangeOfComposedCharacterSequencesForRange一起使用:避免分解组合字符
了解如何使用rangeOfComposedCharacterSequenceAtIndex:
正确删除最后一个字符。
文档是你的朋友, NSString
支持调用substringWithRange
,可以缩短你有一个返回缩短的string的string。 你不能修改NSString
的实例是不可变的。 如果你有一个NSMutableString
是有一个名为deleteCharactersInRange
的方法,可以修改string到位
... NSRange r; r.location = 0; r.size = [mutable length]-1; NSString* shorted = [stringValue substringWithRange:r]; ...