469,325 Members | 1,621 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,325 developers. It's quick & easy.

"match" issues with non-alphanumberic characters

127 100+
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
7 1478
acoder
16,027 Expert Mod 8TB
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
phub11
127 100+
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
16,027 Expert Mod 8TB
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
phub11
127 100+
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
16,027 Expert Mod 8TB
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
phub11
127 100+
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
16,027 Expert Mod 8TB
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.

Similar topics

5 posts views Thread by kmunderwood | last post: by
7 posts views Thread by Chris Mantoulidis | last post: by
2 posts views Thread by Papkin | last post: by
1 post views Thread by Pythor | last post: by
3 posts views Thread by Good Man | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
reply views Thread by Gurmeet2796 | last post: by
reply views Thread by mdpf | last post: by
reply views Thread by harlem98 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.