Поиск пробелов, новых строк и табуляций с помощью charAt()

#java #android

#java #Android

Вопрос:

Я пытаюсь проверить, есть ли пробел, новая строка или табуляция в текущем местоположении символа. Пробелы работают, а табуляции и новые строки — нет. Поди разберись, я использую для них экранирование и просто обычный пробел для пробела… Каков правильный способ найти их в определенном месте?

 if(String.valueOf(txt.charAt(strt)).equals(" ") || 
                    txt.charAt(strt) == 'r' ||
                    txt.charAt(strt) == 'n' || 
                    txt.charAt(strt) == 't') {
    //do stuff
                    }
  

Комментарии:

1. Что такое txt ? и если это String … почему вы используете String.valueOf() ?

2. Брайан: Я подозреваю, потому что без него equals жаловался на несовместимые типы (и ' ' было сложнее вводить?)

3. Хорошо, он работает правильно. У меня есть ошибка в другом месте моего кода, которая работает неправильно. спасибо всем.

Ответ №1:

Это работает для меня:

   char c = txt.charAt(strt);
  if (c == ' ' || c == 't' || c == 'n' || c == 'r')
    System.out.println("Found one at "   strt);
  

Ваш тоже работает, хотя за ним немного сложнее следить. Почему у вас это не работает, я не знаю — может быть, строка плохо сформирована? Вы уверены, что у вас действительно есть вкладки и прочее в нем?

Комментарии:

1. Изменен на этот метод сравнения, чтобы сэкономить на стоимости.

Ответ №2:

Это должно работать просто отлично, проверьте вашу входную строку. Кроме того, пробел можно проверить, сравнив символ пробела. Создание нового строкового объекта только для сравнения является дорогостоящим.

Комментарии:

1. … как и извлечение каждого символа четыре раза.

Ответ №3:

Просматривая документы для Editable Android, он возвращает a char . Поэтому …

 if (txt.charAt(strt) == ' ' || 
    txt.charAt(strt) == 'r' ||
    txt.charAt(strt) == 'n' || 
    txt.charAt(strt) == 't') 
{
    //do stuff
}
  

Даст ожидаемый результат.

Ответ №4:

Это регулярное выражение [s] выполнит всю работу. Он соответствует пробелу, эквивалентному [tn r f] .