Как удалить отдельные символы в UITextView - PullRequest
2 голосов
/ 20 мая 2011

У меня есть UITextView длиной, например, 380 символов:

NSLog(@"aTextView.text lenght %i", aTextView.text.length);

Теперь я хочу просмотреть этот текст (в обратном порядке, символ за символом) и удалить все символы, которые стоят перед последним пробелом.(например, если последние слова были "... это пример", то нужно уменьшить строку до "... это":

         for (int i = aTextView.text.length-1; i > 0; i--) {

         NSString *checkedChar = [NSString stringWithFormat:@"%c", [aTextView.text characterAtIndex:i]];
         NSLog(@"I currently check: %@", checkedChar);

         if ([checkedChar isEqualToString:@" "]) {
             // job done
             i = 0; // this ends the loop
         } else {

Мне нужно что-то вроде [aTextView.text removeCharacterAtIndex: i];

         }

     }

Как мне добиться этого? Я не могу найти какие-либо методы в документации и буду очень благодарен за предложения.


РЕДАКТИРОВАТЬ:

 NSString *myString = aTextView.text;

         NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch];
         NSString *oldText = [myString subStringToIndex:range.location];
         NSString *newText = [myString subStringFromIndex:range.location];

         NSLog(@"++++ OLD TEXT ++++: %@", oldText);
         NSLog(@"++++ NEW TEXT ++++: %@", newText);

         aTextView.text = oldText;

Это приводит к сбою моего приложения ... Я звоню с - (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText

Я получаю сообщение об ошибке: * Завершение приложенияиз-за необработанного исключения «NSInvalidArgumentException», причина: '- [NSCFString subStringToIndex:]: нераспознанный селектор, отправленный экземпляру 0x4e33850'

И xCode выдает мне предупреждение, которое subStringToIndex может не отвечать ...

Ответы [ 2 ]

4 голосов
/ 20 мая 2011

Вам не нужен цикл для этого - взгляните на NSString ' rangeOfString: параметры: и substringToIndex: методы. Например:

NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch];

NSString *newString = [myString substringToIndex:range.location];

Надеюсь, это поможет.

NB Не забудьте проверить, что ваша строка определенно содержит пробел;)

0 голосов
/ 30 июня 2012

Это очень просто в iOS 5 или более поздней версии:

// This is your delete button method.
-(IBAction)btnDelete:(id)sender
{
    // txtView is UITextView
    if([txtView.text length] > 0)
    {
        [txtView deleteBackward];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...