Reputation: 65
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
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
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
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