By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,608 Members | 1,940 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,608 IT Pros & Developers. It's quick & easy.

"match" issues with non-alphanumberic characters

100+
P: 127
Hi all,

I am using "match" to see if elements in one array match elements in another array.

My first array is "1.1,1.2,2.1" so I convert it to a string. Next, I have a loop that cycles through the second array, converts the current element of the second array to a string, and then uses "match" to see if this occurs in the string corresponding to the first array.

"match" seems to get confused if I have an element such as "2.2" in the second array, as it thinks it matches "....2,2...." in the string corresponding to the first array.

Any ideas on how to fix this?

Thanks in advance
Apr 30 '09 #1
Share this Question
Share on Google+
7 Replies


acoder
Expert Mod 15k+
P: 16,027
Why bother with strings when you have the values and can match directly?

When using match, the string is converted to a regular expression where the dot character can match any character including comma.
Apr 30 '09 #2

100+
P: 127
Thanks for the reply.

I thought it would be quicker using "match" with string than having a subloop (for each element within array 2) within a loop (for each element within array 1).

Am I misunderstanding your suggestion?

Thanks!
Apr 30 '09 #3

acoder
Expert Mod 15k+
P: 16,027
Fair enough, though I'm not sure about the exact performance differences.

For your problem, replace the "." with "\.", so 2.2 becomes 2\.2, so that the dot is matched and not any character.
May 1 '09 #4

100+
P: 127
Thanks for the reply.

In the end, my work around was to change "string.split(',')" to "string.split('X')".

EDIT: Oops, that doesn't work!

Thanks again!
May 1 '09 #5

acoder
Expert Mod 15k+
P: 16,027
Why would you be using split (producing an array) when you already had one in the first place?!

As I said, use the backslash \ to escape the dot.
May 1 '09 #6

100+
P: 127
Sorry, hadn't looked at it until last night and forgot where I was!

The problem with your suggestion in that I'd have to edit a lot of other functions (each element is called from a cell ID in a table).

The correct work around is: string1 = string.replace(/,/g, "XXX")

Works for me so far.
May 1 '09 #7

acoder
Expert Mod 15k+
P: 16,027
That would work, but be careful about the fact that it's a fix because the dot is still matching any character. It doesn't match 2,2 because that's now become 2XXX2.
May 1 '09 #8

Post your reply

Sign in to post your reply or Sign up for a free account.