2009-07-04 161 views

回答

401

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

5

该文档是你的朋友,NSString支持呼叫substringWithRange可以缩短你有一个返回缩短字符串的字符串。您不能修改NSString的实例,它是不可变的。如果你有一个NSMutableString是有一个名为deleteCharactersInRange方法,可以修改字符串到位

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

NSMakeRange有时可以填充范围结构看起来更优雅。 – dreamlax 2009-07-04 13:40:14

+0

@Harald,`substringWithRange:`返回`NSString *`。记下指针。 – 2012-01-06 10:56:19

51

如果它是一个的NSMutableString(这我会建议,因为你动态地改变它),你可以使用:

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

这里给出的解决方案竟然不考虑多字节Unicode字符(”组成字符“),并可能导致Unicode字符串无效。

事实上,它包含的substringToIndex声明iOS的头文件中包含了以下评论:

提示:与rangeOfComposedCharacterSequencesForRange使用:避免分手组成的字符

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

相关问题