mIRC Home    About    Download    Register    News    Help

Print Thread
duplicate data in a var #264565 15/12/18 02:28 PM
Joined: Jul 2014
Posts: 121
Tiago Offline OP
Vogon poet
OP Offline
Vogon poet
Joined: Jul 2014
Posts: 121
Hi
I have a %var as follows:

PTirc PTirc PTirc PTirc PTnet PTnet PTnet PTnet PTnet PTnet PTnet

I no longer remember how I can filter this and make the var return only one word:

Example: PTirc PTnet

Does anyone know how to do it?


TECO
irc.PTirc.org (IRCop)
Re: duplicate data in a var [Re: Tiago] #264566 15/12/18 02:41 PM
Joined: Jul 2006
Posts: 3,556
W
Wims Offline
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,556
use $addtok to add to the variable

//echo -a $addtok(test,test,32)


Looking for a good help channel about mIRC? Check #mircscripting @ irc.swiftirc.net
Re: duplicate data in a var [Re: Wims] #264567 15/12/18 02:46 PM
Joined: Jul 2014
Posts: 121
Tiago Offline OP
Vogon poet
OP Offline
Vogon poet
Joined: Jul 2014
Posts: 121
Originally Posted By: Wims
use $addtok to add to the variable

//echo -a $addtok(test,test,32)

This is not for what I need


TECO
irc.PTirc.org (IRCop)
Re: duplicate data in a var [Re: Tiago] #264568 15/12/18 02:56 PM
Joined: Jul 2006
Posts: 3,556
W
Wims Offline
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,556
How are you getting that variable with such a value?

You can use $regsubex(PTirc PTirc PTirc PTirc PTnet PTnet PTnet PTnet PTnet PTnet PTnet,/(\w+)(?=.*\b\1\b) */,)


Looking for a good help channel about mIRC? Check #mircscripting @ irc.swiftirc.net
Re: duplicate data in a var [Re: Wims] #264569 15/12/18 07:40 PM
Joined: Jul 2014
Posts: 121
Tiago Offline OP
Vogon poet
OP Offline
Vogon poet
Joined: Jul 2014
Posts: 121
Originally Posted By: Wims
How are you getting that variable with such a value?

You can use $regsubex(PTirc PTirc PTirc PTirc PTnet PTnet PTnet PTnet PTnet PTnet PTnet,/(\w+)(?=.*\b\1\b) */,)

Yes, I am getting this value in a variable, but I intend to remove all repeated words and that the final result is, it gets one of each.

Example. Final result: PTirc PTnet


TECO
irc.PTirc.org (IRCop)
Re: duplicate data in a var [Re: Tiago] #264577 16/12/18 05:59 AM
Joined: Jan 2004
Posts: 1,173
maroon Offline
Hoopy frood
Offline
Hoopy frood
Joined: Jan 2004
Posts: 1,173

Thanks to Raccoon for these aliases. Obviously 32 is the codepoint for the space delimiter.

If you're not concerned with the order in which the tokens appear, you can just do:

//var %a ab cd ef gh ij ab ab ef | echo -a $dedupetok(%a,32)

which returns: cd gh ij ab ef
... which is the order after deleting the leftmost dupes. If you want to make it get rid of the rightmost dupes, you have to flip the word order, then kill the leftmost dupes, then flip it again:

//var %a ab cd ef gh ij ab ab ef | echo -a $revtok($dedupetok($revtok(%a,32),32),32)

returns: ab cd ef gh ij

Code:
alias revtok { var %a = $1, %b = $2 | return $regsubex(_revtok,%a,/[^ $+ $chr(%b) $+ ]+/g,$gettok(%a,-\n,%b)) } ; by Raccoon 2017
alias dedupetok { return $regsubex(_dedupetok,$1,$replace(/(?<=^|x)x*+(?:([^x]++)x++(?=(?:.*?x)??\1(?:x|$)))?|x+$/g,x,\Q $+ $chr($$2) $+ \E),) } ; by Raccoon Ouims Saturn 2017


Re: duplicate data in a var [Re: maroon] #264583 16/12/18 07:52 PM
Joined: Jul 2014
Posts: 121
Tiago Offline OP
Vogon poet
OP Offline
Vogon poet
Joined: Jul 2014
Posts: 121
Originally Posted By: maroon

Thanks to Raccoon for these aliases. Obviously 32 is the codepoint for the space delimiter.

If you're not concerned with the order in which the tokens appear, you can just do:

//var %a ab cd ef gh ij ab ab ef | echo -a $dedupetok(%a,32)

which returns: cd gh ij ab ef
... which is the order after deleting the leftmost dupes. If you want to make it get rid of the rightmost dupes, you have to flip the word order, then kill the leftmost dupes, then flip it again:

//var %a ab cd ef gh ij ab ab ef | echo -a $revtok($dedupetok($revtok(%a,32),32),32)

returns: ab cd ef gh ij

Code:
alias revtok { var %a = $1, %b = $2 | return $regsubex(_revtok,%a,/[^ $+ $chr(%b) $+ ]+/g,$gettok(%a,-\n,%b)) } ; by Raccoon 2017
alias dedupetok { return $regsubex(_dedupetok,$1,$replace(/(?<=^|x)x*+(?:([^x]++)x++(?=(?:.*?x)??\1(?:x|$)))?|x+$/g,x,\Q $+ $chr($$2) $+ \E),) } ; by Raccoon Ouims Saturn 2017




Thank you Raccoon wink
Thank you maroon wink

Last edited by Tiago; 16/12/18 07:53 PM.

TECO
irc.PTirc.org (IRCop)
Re: duplicate data in a var [Re: Tiago] #264584 16/12/18 10:56 PM
Joined: Feb 2003
Posts: 2,641
Raccoon Offline
Hoopy frood
Offline
Hoopy frood
Joined: Feb 2003
Posts: 2,641
Thanks for doing the leg work posting smile Ouims and Saturn helped produce those functions. I bet jaytea too.


Well. At least I won lunch.
Good philosophy, see good in bad, I like!