VJS
VJS

Reputation: 2953

String Manipulation in java 1.6

String can be like below. Using 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";

I want to remove qwq=1234 if present from String. qwq is fixed and its value can VARY like for ex 1234 or 12345 etc

expected result :

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

I tried through

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

but not working.

Upvotes: 0

Views: 129

Answers (7)

Dragan Radevic
Dragan Radevic

Reputation: 801

You must to use groups in replaceAll method.

Here is an example:

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

More about groups you can find on: http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

Upvotes: 0

Maurice Perry
Maurice Perry

Reputation: 9650

Another one:

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

Upvotes: 0

Pushpesh Kumar Rajwanshi
Pushpesh Kumar Rajwanshi

Reputation: 18357

You can use regex for removing that kind of string like this. Use this code,

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

This gives following output,

Before: +17005554141;qwq=1234;ddd=ewew;otg=383
After: +17005554141;ddd=ewew;otg=383

Upvotes: 2

Mark
Mark

Reputation: 5239

I came up with this qwq=\d*\;? and it works. It matches for 0 or more decimals after qwq=. It also has an optional parameter ; since your example seems to include that this is not always appended after the number.

I know the question is not about javascript, but here's an example where you can see the regex working:

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");
}

Upvotes: 2

maio290
maio290

Reputation: 6742

If you don't care about too much convenience, you can achieve this by just plain simple String operations (indexOf, replace and substring). This is maybe the most legacy way to do this:

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;
}

Small test:

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

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

outputs:

+17005554141;ddd=ewew;otg=383
+17005554141

Upvotes: 0

keybored
keybored

Reputation: 129

please try

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

Upvotes: 1

Saurav Sahu
Saurav Sahu

Reputation: 13954

.* applies to multi-characters, not limited to digits. Use something that applies only to bunch of digits

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

Upvotes: 1

Related Questions