java 1.6 中的字符串操作

String Manipulation in java 1.6

字符串可以像下面这样。使用 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=.*;", ""); 

但不工作。

我想出了这个 qwq=\d*\;? 并且它有效。它匹配 qwq= 之后的 0 位或更多位小数。它还有一个可选参数 ; 因为您的示例似乎包括这并不总是附加在数字之后。

我知道问题与 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");
}

您可以像这样使用正则表达式删除那种字符串。使用此代码,

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

.*适用于多字符,不限于数字。使用仅适用于数字串的东西

abc.replaceAll(";qwq=\d+", "")
                      ^^
                      Any Number  

请尝试

abc = abc.replaceAll("qwq=[0-9]*;", "");

如果您不在乎太多方便,您可以通过简单的字符串操作(indexOfreplacesubstring)来实现。这可能是最传统的方法:

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

另一个:

abc.replaceAll(";qwq=[^;]*;", ";");

您必须在 replaceAll 方法中使用组。

这是一个例子:

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

您可以在以下位置找到有关群组的更多信息:http://www.vogella.com/tutorials/JavaRegularExpressions/article.html