2011-10-03 172 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)];