Java1.6中的字符串操作

Java1.6中的字符串操作,java,java-6,Java,Java 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"; 我试过了 abc = abc.replaceAll(";qwq

字符串可以如下所示。使用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";
我试过了

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

但不起作用

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

我知道问题不在于javascript,但这里有一个示例,您可以看到正则表达式正在工作:
const regex=/qwq=\d*\/G
变量项=[“+17005554141;qwq=123454”,
"+17005554141",
“+17005554141;qwq=1234;ddd=EWW;otg=383”];
for(设i=0;i}
我想出了这个
qwq=\d*\并且它可以工作。它在
qwq=
之后匹配0或更多小数。它还有一个可选参数
因为您的示例似乎包括这并不总是附加在数字之后

我知道问题不在于javascript,但这里有一个示例,您可以看到正则表达式正在工作:
const regex=/qwq=\d*\/G
变量项=[“+17005554141;qwq=123454”,
"+17005554141",
“+17005554141;qwq=1234;ddd=EWW;otg=383”];
for(设i=0;i}
您可以使用regex删除类似这样的字符串。使用此代码

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

您可以使用regex删除类似这样的字符串。使用此代码

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.replaceAll(";qwq=\\d+", "")
                      ^^
                      Any Number  
请试一试

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

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

如果您不关心太多的便利性,可以通过简单的字符串操作(
indexOf
replace
子字符串
)来实现这一点。这可能是最传统的方法:

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

如果您不关心太多的便利性,可以通过简单的字符串操作(
indexOf
replace
子字符串
)来实现这一点。这可能是最传统的方法:

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=[^;]*;", ";");
另一个:

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

必须在replaceAll方法中使用组

以下是一个例子:

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

有关组的详细信息,请访问:

您必须在replaceAll方法中使用组

以下是一个例子:

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

有关组的更多信息,请访问:

“但不工作”。。。什么意思?你得到了什么错误,或者得到了什么结果?很明显,您上面发布的代码不是您运行的代码,那么您运行的代码到底是什么,您得到了什么结果?您所说的“不工作”是什么意思?当您使用两个分号来匹配字符串时,您需要再次添加至少一个分号。或者,为了避免在“qwq”是最后一个元素时出现问题,根本不要使用分号。得到这个结果:+17005554141otg=383现在我尝试了:abc=abc.replaceAll(“;isub=;*”,”);看起来它正在工作,这正是@Tom建议的应该解决的问题。将匹配项替换为“
”;“
不是空字符串,因为您正在匹配两个分号。“但不起作用”。。。什么意思?你得到了什么错误,或者得到了什么结果?很明显,您上面发布的代码不是您运行的代码,那么您运行的代码到底是什么,您得到了什么结果?您所说的“不工作”是什么意思?当您使用两个分号来匹配字符串时,您需要再次添加至少一个分号。或者,为了避免在“qwq”是最后一个元素时出现问题,根本不要使用分号。得到这个结果:+17005554141otg=383现在我尝试了:abc=abc.replaceAll(“;isub=;*”,”);看起来它正在工作,这正是@Tom建议的应该解决的问题。将匹配项替换为
“;”
不是空字符串,因为您正在匹配两个分号。是的,它将失败。很抱歉,没有看到该示例输入。。。只需要稍加修改。编辑了我的正则表达式,现在它可以工作了是的,它将失败。很抱歉,没有看到示例输入。。。只需要稍加修改。编辑了我的正则表达式,现在它可以工作了