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

Oma*_*mar 151 string cocoa cocoa-touch objective-c ios

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

Mar*_*eau 417

在您的控制器类中,创建一个操作方法,您将在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
}
Run Code Online (Sandbox Code Playgroud)






如果你想在一行代码中用一种奇特的方式来编写它,你可以把它写成:

string = [string substringToIndex:string.length-(string.length>0)];
Run Code Online (Sandbox Code Playgroud)

*花哨的单行代码片段的说明:

如果有一个要删除的字符(即字符串的长度大于0)
     (string.length>0)返回,1 从而使代码返回:
          string = [string substringToIndex:string.length-1];

如果没有要删除的字符(即,字符的长度) string不大于0)
     (string.length>0)返回0 因此使代码返回:
          string = [string substringToIndex:string.length-0];
     这可以防止崩溃.

  • 您的解决方案有1个错误.它应该是[string substringToIndex:[string length] - 1]; (8认同)

Dav*_*ong 53

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

[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
Run Code Online (Sandbox Code Playgroud)


use*_*136 8

这里给出的解决方案实际上没有考虑多字节Unicode字符("组合字符"),并且可能导致无效的Unicode字符串.

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

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

了解如何使用rangeOfComposedCharacterSequenceAtIndex:正确删除最后一个字符.


Har*_*ich 6

文档是你的朋友,NSString支持一个调用substringWithRange,可以缩短你返回缩短的字符串的字符串.你无法修改NSString它的实例是不可变的.如果你有一个NSMutableStringis有一个方法deleteCharactersInRange,可以修改字符串到位

...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
Run Code Online (Sandbox Code Playgroud)