Shoutbox

Replace() Help - Printable Version

-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
+---- Forum: Scripting (/forumdisplay.php?fid=39)
+----- Thread: Replace() Help (/showthread.php?tid=65100)

Replace() Help by Spunky on 08-19-2006 at 12:17 AM

I searched the forums for this, but the code doesnt seem to quite work in the exact way I want *-)

I'm making a script that converts a message to a code (in group convos, only people that have the script will recieve the decoded message). I can replace letters, but only as long as it is an exact match (ie it can't have any characters either side of the one I want to replace). 

I'm going to use a multi-dimensional array to store the code like so:

code:
myCode = [["a"]["XyZ"],["A"]["xYz"]];

Thats obviously just an example, but I want to replace ALL "a"s in the message with "XyZ". So I was thinking something like:
code:
tmpMessage = tmpMessage.replace(myCode[0][0],myCode[0][1]);

inside a For Loop.

I know the code seems pointless, but me and my friend usually have group conversations and still talk in a seperate window as well so the other participants don't have a clue what we're talking about.
RE: Replace() Help by Silentdragon on 08-19-2006 at 12:36 AM

code:
var myCode = [ [new RegExp("a","g"),"XyZ"],[new RegExp("A","g"),"xYz"] ];
    tmpMessage = tmpMessage.replace(myCode[0][0],myCode[0][1]);
    tmpMessage = tmpMessage.replace(myCode[1][0],myCode[1][1]);

1. You made your arrays wrong [ ["Stuff","Stuff2"], ["Stuff3","Stuff4"] ] Thats how to make a multidimensional
2. For replace you need either /texttofind/options or a RegExp object for the first argument.
RE: Replace() Help by Spunky on 08-19-2006 at 12:38 AM

Ok, I knew I did it different before lol :P

Whats the "new RegExp" part do then?


RE: Replace() Help by Silentdragon on 08-19-2006 at 12:44 AM

it creates a RegExp object for the replace function
although a better way would be to do this in the for loop
var RegEx = new RegExp(myCode[i][0],"g");
tmpMessage = tmpMessage.replace(RegEx,myCode[i][1]);

so you don't need to make a new RegExp object for each array value.