471,881 Members | 1,344 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,881 software developers and data experts.

"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 1543
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
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?

Apr 30 '09 #3
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
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
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
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
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

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.