删除NSString的最后一个字符


73

我在尝试删除NSString的最后一个字符时遇到了麻烦。我是Objective-C的新手,我不知道如何进行这项工作。

你们能照亮我吗?


7
“你们能照亮我吗? ” 您正在寻找的用法是“启发我”。

Answers:


196
NSString *newString = [oldString substringToIndex:[oldString length]-1];

始终参考文档


要包含与您的案例有关的代码:

NSString *str = textField.text;
NSString *truncatedString = [str substringToIndex:[str length]-1];

2
我的Xcode似乎可以“理解”这个“ substringToIndex”,他甚至可以自动写入。这样对吗?
markus

1
只要您#import <Foundation/Foundation.h>使用的是Mac OS X 10.0或更高版本/ iOS 2.0或更高版本,那么就可以了。确保下载Xcode设置中的文档集,以获取方法自动完成功能。

@markus是否在NSString中调用它?以防万一,在您要使用的代码行中发布。
sidyll 2011年

@ darvids0n可能是以字符串以外的方式调用它。
sidyll 2011年

1
如果您使用的是10.0之前的Mac OS X,我会印象深刻。(是的,它确实存在!Sorta。)
Jonathan Grynspan 2011年

12

尝试这个:

s = [s substringToIndex:[s length] - 1];

1
当NSString长度为0时,这很容易崩溃,请添加验证: if([s length]> 0){ s = [s substringToIndex:[s length]-1]; }
krischu 2014年

5
NSString *string = [NSString stringWithString:@"ABCDEF"];
NSString *newString = [string substringToIndex:[string length]-1];
NSLog(@"%@",newString);

您可以看到= ABCDE


请在编辑器中使用“ {}”选项设置代码格式。:-)
约翰·帕克

4
NSString = *string = @"abcdef";

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

这段代码只会返回字符串的最后一个字符,而不是将其删除:

NSString *newString = [oldString substringToIndex:[oldString length]-1];

您可以改用此命令删除最后一个字符并保留字符串的其余值:

str = [str substringWithRange:NSMakeRange(0,[str length] - 1)];

并将substringToIndex设置为长度0的NSString也会导致崩溃。

您应该先添加验证,例如:

if ([str length] > 0) {

   str = [str substringToIndex:[s length] - 1];

}

这样,可以安全地使用子字符串方法。

注意:如果苹果电脑容易崩溃,它将拒绝您的应用程序。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.