Как в Objective-C для iOS как удалить последний символ строки с помощью действия кнопки?
Как в Objective-C для iOS как удалить последний символ строки с помощью действия кнопки?
В вашем классе контроллера создайте метод действия, к которому вы подключите кнопку в Интерфейсном Разработчике. Внутри этого метода вы можете обрезать вашу строку следующим образом:
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];
что предотвращает сбои.
string != nil && [string length] > 0
. Скорее всего, строковая переменная Донала переиздается.Если это NSMutableString (который я бы порекомендовал, поскольку вы меняете его динамически), вы можете использовать:
источник
Приведенные здесь решения на самом деле не учитывают многобайтовые символы Юникода («составные символы») и могут привести к недопустимым строкам Юникода.
Фактически, заголовочный файл iOS, который содержит объявление,
substringToIndex
содержит следующий комментарий:Посмотрите, как правильно использовать
rangeOfComposedCharacterSequenceAtIndex:
последний символ.источник
Документация вашего друга,
NSString
поддерживает вызов,substringWithRange
который может сократить строку, которую вы возвращаете, сокращенную строку. Вы не можете изменить его экземплярNSString
неизменным. Если у вас естьNSMutableString
is есть метод,deleteCharactersInRange
который может изменить строку на местеисточник
substringWithRange:
возвращаетNSString*
. Обратите внимание на указатель.