Замените параметры, которые можно изменить в строке, используя регулярное выражение - PullRequest
0 голосов
/ 21 сентября 2018

Допустим, у меня есть строка, другая версия входной строки:

a) Name='book' Number='345' Version='12' Author='name1'
b) Name='book' Version='12' Author='name1' Number='345'

Мне нужно удалить Version='xx' and Number='xx' из этой входной строки.Значения этих параметров всегда можно изменить.

Каков наилучший способ сделать это?Я попробовал регулярное выражение, что-то вроде:

String input = input.substring(0, input.indexOf("Number")) + "" + input.substring(input.indexOf("Version"));

Но это будет работать только для этого случая:

a) Name='book' Number='345' Version='12' Author='name1'

Но не для этого:

b) Name='book' Version='12' Author='name1' Number='345'

Так каксделать общий подход?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Вы можете добиться того, что вы хотите сделать с помощью регулярного выражения, используя метод replaceAll, как показано ниже:

    String input = "Name='book' Number='345' Version='12' Author='name1'";
    String input2 = "Name='book' Version='345' Number='12' Author='name1'";

    input = input.replaceAll("(Number|Version)='\\d+'", "");
    input2 = input2.replaceAll("(Number|Version)='\\d+'", "");

    System.out.println(input);
    System.out.println(input2);

вывод:

Name='book'   Author='name1'
Name='book'   Author='name1'
0 голосов
/ 21 сентября 2018

Вы можете использовать регулярное выражение для замены:

"Name='book' Number='345' Version='12' Author='name1'"
    .replaceAll("( Number| Version)='\\d+'", "")

Возвращает Name='book' Author='name1'

replaceAll("( Number| Version)='\\d+'", "") находит Number ИЛИ Version, за которым следует число в одинарных кавычкахи заменяет ее пустой строкой.

Как следует из комментария Аарона ниже, если порядок пар ключ / значение может измениться, тогда другое регулярное выражение может быть лучше:

s.replaceAll("(?:^| )(?:Number|Version)='\\d+'", "").trim()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...