Objective C - 从字符串中删除最后一个字符

时间:2009-07-04 13:06:33

标签: ios objective-c iphone cocoa cocoa-touch

在iPhone的Objective C中,如何使用按钮操作删除字符串的最后一个字符。

4 个答案:

答案 0 :(得分:416)

在您的控制器类中,创建一个操作方法,您将在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];
这可以防止崩溃。

答案 1 :(得分:51)

如果它是NSMutableString(我建议你动态更改它),你可以使用:

[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];

答案 2 :(得分:8)

此处给出的解决方案实际上没有考虑多字节Unicode字符(“组合字符”),并且可能导致无效的Unicode字符串。

实际上,包含substringToIndex声明的iOS头文件包含以下注释:

  

提示:与rangeOfComposedCharacterSequencesForRange一起使用:避免分解组合字符

请参阅how to use rangeOfComposedCharacterSequenceAtIndex:以正确删除最后一个字符。

答案 3 :(得分:5)

文档是您的朋友,NSString支持调用substringWithRange,可以缩短返回缩短字符串的字符串。您无法修改NSString的实例,它是不可变的。如果您有NSMutableString,则有一个名为deleteCharactersInRange的方法可以修改字符串

...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...