Objective C - 删除字符串中的最后一个字符
在你的控制器类,创建一个操作方法,你会钩扣在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];
这可以防止崩溃。
该文档是你的朋友,NSString
支持呼叫substringWithRange
可以缩短你有一个返回缩短字符串的字符串。您不能修改NSString
的实例,它是不可变的。如果你有一个NSMutableString
是有一个名为deleteCharactersInRange
方法,可以修改字符串到位
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
如果它是一个的NSMutableString(这我会建议,因为你动态地改变它),你可以使用:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
这里给出的解决方案竟然不考虑多字节Unicode字符(”组成字符“),并可能导致Unicode字符串无效。
事实上,它包含的substringToIndex
声明iOS的头文件中包含了以下评论:
提示:与rangeOfComposedCharacterSequencesForRange使用:避免分手组成的字符
见how to use rangeOfComposedCharacterSequenceAtIndex:
删除最后一个字符正确。
NSMakeRange有时可以填充范围结构看起来更优雅。 – dreamlax 2009-07-04 13:40:14
@Harald,`substringWithRange:`返回`NSString *`。记下指针。 – 2012-01-06 10:56:19