Quiero ejecutar una comprobación en una cadena justo antes de anexarlo a un StringBuilder para asegurarme de que solo haya caracteres numéricos en la cadena. ¿Cuál es una manera simple de hacer eso?Buscar solo dígitos en VB.NET String
Respuesta
Utilice Integer.TryParse() devolverá true si solo hay dígitos en la cadena. El valor máximo de Int32 es 2.147.483.647, por lo tanto, si su valor es menor, entonces su multa. http://msdn.microsoft.com/en-us/library/f02979c7.aspx
También puede usar Double.TryParse() que tiene un valor máximo de 1.7976931348623157E + 308 pero permitirá un punto decimal.
Si lo que buscas para obtener el valor que isnt un número entero que puede ir siempre a través de la cadena de uno a la vez
string test = "1112003212g1232";
int result;
bool append=true;
for (int i = 0; i < test.Length-1; i++)
{
if(!Int32.TryParse(test.Substring(i,i+1),out result))
{
//Not an integer
append = false;
}
}
añadir, si se mantiene fiel a continuación, la cadena es un número entero. Probablemente una forma más hábil de hacer esto, pero esto debería funcionar.
Siempre que la cadena no sea mayor que la Int32 máxima. – AllenG
Eso no funcionará si la cadena es demasiado larga, lo que da como resultado el desbordamiento de entero – Rockcoder
Bastante solo quiero asegurarme de que una cadena solo tenga caracteres numéricos, y si no es así, necesito encontrar la ubicación en esa cadena donde el carácter no numérico se encuentra, y ver cuál es el valor – Scott
Puede utilizar expresiones regulares o Integer.TryParse y prefiero el cheque expresión regular
utilizar expresiones regulares:
Dim reg as New RegEx("^\d$")
If reg.IsMatch(myStringToTest) Then
' Numeric
Else
' Not
End If
ACTUALIZACIÓN:
También es posible usar LINQ para realizar la misma tarea si lo está haciendo en VB.Net 2008/2010.
Dim isNumeric as Boolean = False
Dim stringQuery = From c In myStringToTest
Where Char.IsDigit(c)
Select c
If stringQuery.Count <> myStringToTest.Length Then isNumeric = False
Expresiones regulares es la solución más elegante en mi humilde opinión. Usamos RE para la mayor parte de nuestra validación de entrada y depuración de datos. – knslyr
Suponiendo que usted está buscando en cadenas relativamente cortas, que nunca tendrá un número mayor que el valor máximo Int32, utilizar la solución de Gage. Si se trata de una longitud variable y, a veces podría desbordarse, utilizar expresiones regulares (System.Text.RegularExpressions
)
La expresión regular para comprobar contra sólo números es bastante rutinaria: ^[0-9]+$
Comprobar here por una muy buena explicación de expresiones regulares.
Si no desea usar RegEx, funciona una simple comprobación de cada carácter con char.IsNumber
.
Se puede combinar con el método All
extensión (en C#, no sé cómo se escribe en VB.net):
string value = "78645655";
bool isValid = value.All(char.IsNumber);
Salida otro método char
, como IsDigit
. otros
Desafortunadamente, VB no te permitirá escribir algo tan elegante. Terminarías con 'value.All (Function (c) Char.IsNumber (c))' –
2 soluciones compactas:
Sin LINQ:
Dim foo As String = "10004"
Array.Exists(foo.ToCharArray, Function(c As Char) Not Char.IsNumber(c))
Con LINQ (justo VB.Net equivalente de la versión C# en otra respuesta):
foo.All(Function(c As Char) Char.IsNumber(c))
Codificación en VB .Net para verificar si una cadena contiene solo valores numéricos o no.No se han mencionado
If IsNumeric("your_text") Then
MessageBox.Show("yes")
Else
MessageBox.Show("no")
End If
valores negativos, que Integer.TryParse
aceptarían.
Prefiero UInteger.TryParse
que rechazará un número negativo. Sin embargo, hay una comprobación adicional requerida en caso de que el valor comienza con "+":
Dim test As String = "1444"
Dim outTest As UInteger
If Not test.StartsWith("+") AndAlso UInteger.TryParse(test, outTest) Then
MessageBox.Show("It's just digits!")
End If
o ULong.TryParse
para un número mayor.
- 1. ¿Qué significa [String] en VB.NET?
- 2. ¿Cómo puedo buscar una matriz en VB.NET?
- 3. Segura Dígitos hexadecimales aleatorios solo
- 4. Cómo buscar una cadena en String array
- 5. propiedad automática de VB.net - ¿solo?
- 6. Regex permitir dígitos y un solo punto
- 7. Verificar si la cadena contiene solo dígitos
- 8. VB.NET Obtener solo el año a partir de la fecha
- 9. Strip HTML from string en SSRS 2005 (VB.NET)
- 10. Rendimiento del diccionario (de String, SomeReferenceType) en VB.NET
- 11. C# string manipulación buscar y reemplazar
- 12. ¿Cómo establecer NumberTextBox acepta solo dígitos en dojo?
- 13. ¿Buscar solo interfaces no heredadas?
- 14. Equivalente a "Dim As String * 1" VB6 a VB.NET
- 15. Sintaxis para redondear en VB.NET
- 16. iOS: ¿cómo verificar si una cadena tiene solo dígitos?
- 17. Fundición en VB.NET
- 18. Active Directory: buscar solo objetos de usuario
- 19. VB.NET
- 20. Mostrando solo los últimos 4 dígitos en un cuadro de texto
- 21. Dígitos inversos en R
- 22. OS X Buscar en bash con dígitos regexales \ d no produce los resultados esperados
- 23. ¿Cómo buscar solo columnas específicas de una tabla en django?
- 24. Buscar subcadena en cadena pero solo si las palabras completas?
- 25. Buscar solo obtener o establecer referencias de propiedad en VS2010?
- 26. Buscar y reemplazar solo en archivos abiertos (netbeans)
- 27. Compruebe la cadena para solo dígitos y un punto decimal opcional.
- 28. Comparación de tipos en VB.NET
- 29. ¡Sumando dígitos!
- 30. Cómo dividir una cadena entre letras y dígitos (o entre dígitos y letras)?
¿Define el carácter numérico? ¿Considera solo de 0 a 9, o hexa decimal también? ¿Es '0x87' válido? –
Sip solo 0-9 Necesito hacer un seguimiento de – Scott
Solo cifras positivas, entonces? –