una facil

19/10/2007 - 04:19 por henrynet | Informe spam
como saber desde c# cuando un valor es numerico

Preguntas similare

Leer las respuestas

#1 Sashka
19/10/2007 - 05:00 | Informe spam
public bool Es_Numerico(string theValue)
{
Regex esNumero = new Regex(@"^\d+$");
Match m = esNumero.Match(theValue);
return m.Success;
}

Sashka

"henrynet" escribió en el mensaje
news:
como saber desde c# cuando un valor es numerico

Respuesta Responder a este mensaje
#2 Alberto Poblacion
19/10/2007 - 08:17 | Informe spam
"henrynet" wrote in message
news:
como saber desde c# cuando un valor es numerico



Puedes usar el método TryParse si sabes el tipo de valor numérico que
persigues (por ejemplo, System.Decimal):

string valorAComprobar = "123456";
decimal numero;
bool ok = decimal.TryParse(valorAComprobar, out numero);
if (ok) ... //es numérico

Nota: TryParse requiere al menos la versión 2.0 del Framework.
Respuesta Responder a este mensaje
#3 Harvey Triana
19/10/2007 - 15:39 | Informe spam
Alguna vez yo había publicado:

using System.Globalization;
...
// First source: http://aspalliance.com/articleViewer.aspx?aId€&pId// Modify and review by Harvey Triana
private bool IsNumeric0(string s)
{
bool hasDecimal = false;
bool r = false;
char ds =
Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator);
char gs =
Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator);

for (int i = 0; i < s.Length; i++)
{
// check for decimal
if (s[i] == ds)
{
if (hasDecimal) // 2nd decimal
r = false;
else // 1st decimal
{
// inform loop decimal found and continue
hasDecimal = true;
continue;
}
}
// check if number
if (char.IsNumber(s[i]) || (s[i] == gs))
r = true;
Else
{
r = false;
break;
}
}
return r;
}

Pero francamente TryParse me sorprende (en el fondo debe tener el mismo
código). Solo me decepciona que no aplica para notación cientifica, p.e.
1.123456E+12 ... Imagino que será anexado en futuras versiones del FK. --
Bueno, sobra decir que mi version aplica para cualquier version FK --

Con TryPArse IsNumeric se reduce a
public bool IsNumeric2(string v)
{
decimal d;
return decimal.TryParse(v, out d);
}

- La versión Regex de Sashka se reduce solo a enteros, no ha numeros de
punto florante. Por curiosidad, ¿Alguien conoce la version Regex para
numeros de punto florante?

Att.
<Harvey Triana />


"henrynet" escribió en el mensaje
news:
como saber desde c# cuando un valor es numerico
Respuesta Responder a este mensaje
#4 Jose Luis Manners
19/10/2007 - 15:50 | Informe spam
otras dos alternativas:

1. si solo necesitas comparar 1 caracter en una cadena lo puedes hacer con
Char.IsNumber:

Char.IsNumber("0x2BAD", 3);

2. también puedes usar la vieja función IsNumeric de VB is añades el
ensamblado Microsoft.VisualBasic.dll a tu proyecto:

if (Microsoft.VisualBasic.Information.IsNumeric("1234"))
{
// haz algo aqui
}

aunque este ensamblado contien muchisimas otras clases y funciones, yo
personalmente no lo incluiria en mi proyecto para tan solo usar IsNumeric,
:-)


-
Coopera con el foro. Dinos si te sirvió la respuesta aquí planteada.
-

Regards/Saludos,

Jose Luis Manners
Microsoft MVP Visual C#
http://www.josemanners.com/

"Simplicity is the ultimate sophistication."




"henrynet" wrote in message
news:
como saber desde c# cuando un valor es numerico
Respuesta Responder a este mensaje
#5 henrynet
20/10/2007 - 01:01 | Informe spam
muchas gracias.

saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida