Почему не работает replaceAll

236
04 ноября 2017, 12:29

Есть вот такая строчка

"rows":[{"id":"663860","values":...}

Мне нужно удалить первые 6 символов (rows":[). Для этого я пишу

string.replaceAll("\"rows\":\\[","");

Но ничего не происходит. Почему, что не так?

Answer 1

String#replace() не модифицирует строку, на которой вызывается, но возвращает изменённую строку. Т.е. надо так:

String string = ...;
string = string.replaceAll("\"rows\":\\[","");
Answer 2

Во-первых, если у вас JSON или что-то подобное на входе, то настоятельно рекомендуется использовать соответсвующие парсеры, а не изобретать велосипед. Во-вторых, рекомендовано использовать replace вместо replaceAll, потому как последний работает на регулярных выражениях, а они не самые быстрые. В-третьих, если вы все таки хотите дальше изобретать велосипед, то в данном конкретном случае Ваше выражение не работает по причине наличия в исходной строке спец. символов. Там появляются танцы с бубном в виде экранирования, но , его вы используете в самом реплейсе, а контроля над созданием исходной строки у вас нет. А проблема именно оттуда. Поэтому лучше схитрите и напишите в качестве изобретенного велосипеда вот так string.substring(string.indexOf("[")+1); Так вы удалите все до первых квадратных скобок включительно.

READ ALSO
Обработка GET запроса по одному URL

Обработка GET запроса по одному URL

Есть список юзеров на /user/allКак сделать что бы в контроллере можно было обрабатывать GET запросы такого типа /user/all?name=Ivan

259
Параллельное программирование в андроид

Параллельное программирование в андроид

В андроид есть поддержка c++, значит можно на базе андроид смартфонов организовывать параллельные вычисления на OpenMP? Есть ли такая поддержка...

173
Как получить курс валют Yahoo в формате json или xml Yahoo Api

Как получить курс валют Yahoo в формате json или xml Yahoo Api

Кто знает как получить курс валют yahoo? Раньше получал с помошью строки запроса Yahoo Console, или это Тоже самое но Json, но теперь они не работают,...

314
Не работает привязка с GridBagLayout

Не работает привязка с GridBagLayout

Почему не работает привязка элемента к GridBagLayout? textField всегда отображается посередине окна

249