2011-10-03 182 views
67

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

你们能照亮我吗?

+5

“难道你们(HTTP [照亮我?]:// dictionary.reference.com/browse/light+up?r=75&src=ref&ch=dic)”。您要查找的用法是“[enlighten](http://dictionary.reference.com/browse/enlighten?r=75&src=ref&ch=dic)我”。 – darvids0n

回答

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

请务必参阅documentation


要包括相关的代码,你的情况:

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

我的Xcode doenst似乎'明白'这个“substringToIndex”,他甚至可以自动写入。这样对吗? – markus

+1

只要你#import '并且正在使用Mac OS X 10.0或更高版本/ iOS 2.0或更高版本,那么是的。确保下载Xcode设置中的文档集以获取方法自动完成。 – darvids0n

+0

@markus你在NSString中调用它吗?为了以防万一,请在您想要使用它的代码行后张贴。 – sidyll

11

试试这个:

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

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

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

你可以看到= ABCDE

+0

请使用编辑器中的“{}”选项来格式化您的代码。 :-) –

3
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到的NSString与0长度将导致死机。

你应该这样做,这样前添加验证:

if ([str length] > 0) { 

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

} 

与此,它是安全的使用方法子。

注:如果Apple的应用程序易受崩溃影响,它将拒绝您的应用程序。

0

这是我偶然发现的一小段代码,我还没有在Stack上看到它。

它只适用于你想删除或改变的字符存在,这在很多情况下很方便。如果字符/ s不存在,它不会改变你的NSString:

NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"]; 

这是我如何使用它:

//declare what to look for 
NSString * suffixTorRemove = @"</p>"; 
NSString * prefixToRemove = @"<p>"; 
NSString * randomCharacter = @"</strong>"; 
NSString * moreRandom = @"<strong>"; 
NSString * makeAndSign = @"&"; 

//I AM INSERTING A VALUE FROM A DATABASE AND HAVE ASSIGNED IT TO returnStr 
returnStr = [returnStr stringByReplacingOccurrencesOfString:suffixTorRemove withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:prefixToRemove withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:randomCharacter withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:moreRandom withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:makeAndSign withString:@"&"]; 

//check the output 
NSLog(@"returnStr IS NOW: %@", returnStr); 

这一条线是超级容易在一个执行三个动作:

  1. 检查您的字符串/ s的你想找到
  2. 可以替换或用任何你喜欢的
  3. 改变他们
  4. 不影响周围的代码

这就像单词搜索除了iOS的

0

简单,最好的办法

[mutableString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)]; 
相关问题