Манипуляция строк в Java 1.6 - PullRequest
       34

Манипуляция строк в Java 1.6

0 голосов
/ 23 октября 2018

Строка может быть как ниже.Используя java1.6

String example = "<number>;<name-value>;<name-value>";

String abc = "+17005554141;qwq=1234;ddd=ewew;otg=383";
String abc = "+17005554141;qwq=123454";
String abc = "+17005554141";

Я хочу удалить qwq=1234, если он присутствует в строке.qwq фиксировано, и его значение может VARY, как для ex 1234 или 12345 и т. Д.

ожидаемый результат:

String abc = "+17005554141;ddd=ewew;otg=383";
String abc = "+17005554141"; \\removed ;qwq=123454
String abc = "+17005554141";

Я пробовал через

abc = abc.replaceAll(";qwq=.*;", ""); 

, ноне работает.

Ответы [ 7 ]

0 голосов
/ 23 октября 2018

Еще один:

abc.replaceAll(";qwq=[^;]*;", ";");
0 голосов
/ 23 октября 2018

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

Вот пример:

abc.replaceAll("(.*;)(qwq=\\d*;)(.*)", "$1$3");

Подробнее о группах вы можете найти в: http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

0 голосов
/ 23 октября 2018

Если вас не волнует слишком большое удобство, вы можете достичь этого просто простыми строковыми операциями (indexOf, replace и substring).Это, пожалуй, самый традиционный способ сделать это:

private static String replaceQWQ(String target)
{
    if (target.indexOf("qwq=") != -1) {
        if (target.indexOf(';', target.indexOf("qwq=")) != -1) {
            String replace =
                target.substring(target.indexOf("qwq="), target.indexOf(';', target.indexOf("qwq=")) + 1);
            target = target.replace(replace, "");
        } else {
            target = target.substring(0, target.indexOf("qwq=") - 1);
        }
    }
    return target;
}

Небольшой тест:

String abc = "+17005554141;qwq=1234;ddd=ewew;otg=383";
String def = "+17005554141;qwq=1234";

System.out.println(replaceQWQ(abc));
System.out.println(replaceQWQ(def));

Вывод:

+17005554141;ddd=ewew;otg=383
+17005554141
0 голосов
/ 23 октября 2018

пожалуйста, попробуйте

abc = abc.replaceAll("qwq=[0-9]*;", "");
0 голосов
/ 23 октября 2018

.* применяется к многосимвольным символам, не ограничивается цифрами .Используйте то, что относится только к группе цифр

abc.replaceAll(";qwq=\\d+", "")
                      ^^
                      Any Number  
0 голосов
/ 23 октября 2018

Вы можете использовать регулярные выражения для удаления такой строки, как это.Используйте этот код,

String example = "+17005554141;qwq=1234;ddd=ewew;otg=383";
System.out.println("Before: " + example);
System.out.println("After: " + example.replaceAll("qwq=\\d+;?", ""));

Это дает следующий вывод,

Before: +17005554141;qwq=1234;ddd=ewew;otg=383
After: +17005554141;ddd=ewew;otg=383
0 голосов
/ 23 октября 2018

Я придумал это qwq=\d*\;?, и оно работает.Это соответствует 0 или более десятичных знаков после qwq=.Он также имеет необязательный параметр ;, так как ваш пример, кажется, включает в себя, что это не всегда добавляется после числа.

Я знаю, что вопрос не о javascript, но вот пример, где вы можете увидеть регулярное выражениеза работой:

const regex = /qwq=\d*\;?/g;
var items = ["+17005554141;qwq=123454",
            "+17005554141",
            "+17005554141;qwq=1234;ddd=ewew;otg=383"];

for(let i = 0; i < items.length; i++) {
  console.log("Item before replace: " + items[i]);
  console.log("Item after replace: " + items[i].replace(regex, "") + "\n\n");
}
...