I have a big array of data that I imported from a lot of XML files. To get the data, among other manipulations, I use this function:

Cases[xml,XMLElement[nodeName,_,a_]-> a,\[Infinity]]

When I get my final array, I have a lot of number fields that are as String and that I need to convert into Number. To do that I created this function:


The problem is that I have strings with "??" characters, so if o use clean on it as for example:

clean[{"asd??asd", "123.3"}]

Mathematica try to interpret the first element as context ones. And I get:


How to avoid it? How can I improve my clean function, or the way I load de XML?


1 Answer 1


Rather than applying ToExpression and then NumberQ, perhaps you could just use StringMatchQ with NumberString in the first place.

StringMatchQ["assd??asd", NumberString]
(* Out: False *)

StringMatchQ["123.3", NumberString]
(* True *)
  • $\begingroup$ Nice! Will try it. Nice tip. $\endgroup$
    – Murta
    Nov 2, 2012 at 20:22
  • $\begingroup$ It worked like a charm. Tks $\endgroup$
    – Murta
    Nov 3, 2012 at 15:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.