user3129452
user3129452

Reputation: 65

javascript how to delete a certain part of string?

I got this string from my cookies (example) :

Cookies = "link1=whatever; link2=whatever; delete1=true; link3=whatever; delete3=true; link4=whatever;" 

I want to delete the last part of the string that starts with delete and ends with ";" OR "" (nothing, sting end). In this example i want --> delete3=true; <-- that part to be deleted

How to accomplish that?

Upvotes: 0

Views: 49

Answers (3)

user1636522
user1636522

Reputation:

You could do this :

Cookies = Cookies.split(';');
var i = Cookies.length,
    r = /^ *delete\d+=/;
while (--i >= 0) {
    if (r.test(Cookies[i])) {
        Cookies.splice(i, 1);
        Cookies = Cookies.join(';');
        break;
    } 
}

A shorter way :

Cookies = Cookies.replace(
    /; *delete\d+=[^;]*(?!.*; *delete\d+=)/, ''
);

Even simpler (based on Goran.it's answer) :

Cookies = Cookies.replace(/(.*;) *delete\d+=.*?;/, '$1');

Feel free to ask for details.

Upvotes: 1

Arpit Singh
Arpit Singh

Reputation: 3467

Javascript:

Cookies = "link1=whatever; link2=whatever; delete1=true; link3=whatever; delete3=true; link4=whatever;";

aa = Cookies.split(';');

for (_i = 0, _len = aa.length; _i < _len; _i++) {
  a = aa[_i];
  if (a.trim().search(/^delete/) !== -1) deleters = aa.indexOf(a);
}

aa.splice(deleters, 1);

Cookies = aa.join(';');

CoffeeScript:

Cookies = "link1=whatever; link2=whatever; delete1=true; link3=whatever; delete3=true; link4=whatever;"
aa=Cookies.split(';')
for a in aa
    deleters=aa.indexOf(a) if a.trim().search(/^delete/)!=-1
aa.splice(deleters, 1)
Cookies = aa.join(';')

Upvotes: 0

Goran.it
Goran.it

Reputation: 6299

Here is a simple regex solution:

var Cookies = "link1=whatever; link2=whatever; delete1=true; link3=whatever; delete3=true; link4=whatever;";
var fixed = Cookies.replace(/(.*)(\s?delete.*?;)(.*)$/, '$1$3');

// fixed is now: "link1=whatever; link2=whatever; delete1=true; link3=whatever;  link4=whatever;"

Upvotes: 1

Related Questions