2009-07-04 162 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:刪除最後一個字符正確。

相關問題