Вот что я хочу, есть строка типа CHAR_27[19;50H
, и я хочу получить номера изнутри отдельно.Java - String.replaceAll возвращает другой результат
// CHAR_27 = Character.toString((char)27);
// Or "\u001B"
String escapeString = "CHAR_27[19;50H";
String coord = escapeString.replaceAll("[^0-9;]", "");
List<String> coords = Splitter.on(";").splitToList(coord);
if (coords.size() != 2) continue;
rowIndex = Integer.parseInt(coords.get(0)) - 1;
colIndex = Integer.parseInt(coords.get(1)) - 1;
Но иногда оно выбрасывает NumberFormatException, invalid integer CHAR_27[19
.
В основном это прекрасно работает.
Есть что-то не так с моим регулярным выражением?
Или я должен использовать StringUtils.removePattern()
для получения более последовательного результата?
Я получил этот отчет от Nokia_N1 и GT-810 (rolex). Оба из них - Android 5.1.
И я использую Android API 24.
Ваш шаблон выглядит отлично, если вы хотите удалить все, кроме '0-9' и ';'. Трудно сказать, что не так, не видя [SSCCE] (http://sscce.org)/[MCVE]. Возможно, в какой-то части вашего кода вы просто забыли назначить результат «replaceAll» обратно переменной, как описано здесь: http://stackoverflow.com/questions/12734721/string-not-replacing-characters – Pshemo
Но я просто хочу знаете, почему «одна и та же модель с одним и тем же источником возвращает разные результаты», как описано в заголовке. Есть ли какое-то исключение или что-то, что мне не хватает? В моем вопросе достаточно ясно, что есть пример кода и два разных выхода. –
Возможно, проблема связана с контекстом. Как я уже сказал, трудно сказать, что может пойти не так, без простого, но полного примера, который позволил бы нам воспроизвести этот неправильный результат. Согласно правилам Java это не должно происходить, и я не знаю об ошибках в классах Pattern/Matcher, которые используются здесь внутри (если предположить, что Android делает то же, что и Java) (http://grepcode.com/ файл/repository.grepcode.com/Java/корень/JDK/OpenJDK/8-B132/Java/языки/String.java # String.replaceAll% 28java.lang.String% 2Cjava.lang.String% 29)). – Pshemo