#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] .