Умный Java заменить части строки в строке необходимо? - PullRequest
0 голосов
/ 11 июня 2019

Мне нужен какой-нибудь умный код, чтобы показать мне, как это сделать.Я не могу использовать подстроку, разделение и т. Д., Потому что нет конкретного символа для поиска.Я думал о зацикливании String и чтении каждого символа и имел множество операторов if для тестирования, но надеялся, что есть более простой способ сделать это.

String str = "'1_First Name'='1_Johns' AND '200_Age' > '30' OR '123_Dog:name' IS 'Bolt'";
Output needed: "'1'='1_Johns' AND '200' > '30' OR '123' IS 'Bolt'"

Это строка Remedy Query.«1_First Name» - это имя столбца, а «1_Johns» - значение столбца.

Я добавил имена столбцов к столбцу id_, который затем дает мне, например: «1_First Name».

В Remedy мы можем искать по имени столбца или идентификатору столбца.Однако имена столбцов могут быть одинаковыми, но идентификаторы столбцов уникальны.

Так что поэтому необходимо манипулировать только некоторыми частями строки, а другими - нет.

1 Ответ

2 голосов
/ 11 июня 2019
str = str.replaceAll("('\\d+)_[^']+'(?=\\s*([<>=!]|IS))", "$1'");
  • ('\\d+)_[^']+' - это совпадение для каждой переменной.
  • с прогнозом (?=\\s*([<>=!]|IS)) для следующего оператора;lookahead (?= ... ) с шаблоном \\s*([<>=!]|IS).

Это более или менее различает переменную и значение, оба имеют одинаковый регулярный шаблон.

...