¿Cómo puedo eliminar las cadenas y obtener solo números enteros?cómo obtener entero solamente y eliminar toda la cadena en C#
que tienen una cadena (01 - ABCDEFG)
i necesidad de obtener (01) solamente
¿Cómo puedo eliminar las cadenas y obtener solo números enteros?cómo obtener entero solamente y eliminar toda la cadena en C#
que tienen una cadena (01 - ABCDEFG)
i necesidad de obtener (01) solamente
input = Regex.Replace(input, "[^0-9]+", string.Empty);
string snum = System.Text.RegularExpression.Regex.Match(s, "\d+").Value;
int num;
if (!int.TryParse(snum, out num))
throw new Exception();
Debe utilizar expresiones regulares - son una forma muy poderosa para Combina cadenas de texto con ciertos patrones, y este es un gran escenario para usarlos.
El patrón "\d+
" coincidirá con una secuencia de 1 o más dígitos. Un método simple que utiliza este patrón para extraer todos números de una cadena es el siguiente:
public static List<int> ExtractInts(string input)
{
return Regex.Matches(input, @"\d+")
.Cast<Match>()
.Select(x => Convert.ToInt32(x.Value))
.ToList();
}
por lo que podría utilizar de esta manera:
List<int> result = ExtractInts("(01 - ABCDEFG)");
Por alguna información más detallada sobre las expresiones regulares , vea this page (MSDN) o this page (helpful "cheat sheet").
intente esto:
Convert.ToInt32(string.Join(null, System.Text.RegularExpressions.Regex.Split(s, "[^\\d]")))
devuelve valor entero 1.
Compruebe hacia fuera esta entrada de blog: http://weblogs.asp.net/sushilasb/archive/2006/08/03/How-to-extract-numbers-from-string.aspx
Un sencillo programa que extrae el número de la cadena mediante una expresión regular .
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ExtractNumbers("(01 - ABCDEFG)")); // 01
Console.ReadLine();
}
static string ExtractNumbers(string expr)
{
return string.Join(null, System.Text.RegularExpressions.Regex.Split(expr, "[^\\d]"));
}
}
Hope this helps!
Hay cuatro maneras diferentes de hacerlo (bueno, probablemente más, pero he seleccionado estos).
# 1: Regex de Bala R
string output = Regex.Replace(input, "[^0-9]+", string.Empty);
# 2: Regex de donut y agente-j
string output = Regex.Match(input, @"\d+").Value;
# 3: Linq
string output = new string(input.ToCharArray().Where(c => char.IsDigit(c)).ToArray());
# 4: Subcadena, para que esto funcione, el guion debe estar en la cadena entre los dígitos y el texto.
string output = input.Substring(0, input.IndexOf("-")).Replace(" ", "");
Con estas entradas:
string input1 = "01 - ABCDEFG";
string input2 = "01 - ABCDEFG123";
Para 1 y 2 los resultados serían:
output1 = "01";
output2 = "01123";
para 3 y 4 los resultados serían:
output1 = "01";
output2 = "01";
Si el resultado esperado es obtener todos los dígitos en la str ing, use # 1 o # 2, pero si el resultado esperado es solo obtener los dígitos antes del guión, use # 3 o # 4.
Con cuerdas tan cortas como esta # 1 y # 2 son aproximadamente iguales en velocidad y también para # 3 y # 4, pero si hay muchas iteraciones o las cuerdas son cuatro veces más o más # 2 es más rápido que # 1 y # 4 es más rápido que # 3.
Nota: Si los paréntesis se incluye en las cadenas # 4 tiene que ser modifyed a esto, pero eso no hará que sea mucho más lento:
string output = input.Substring(0, input.IndexOf("-")).Replace(" ", "").Replace("(", "");
Response.Write(Convert.ToDecimal(string.Join(null, System.Text.RegularExpressions.Regex.Split(TextBox1.Text, "[^\\d .]"))));
Esto es para tanto int
y decimal
números.
Prueba esto:
string XYZ = string.Join(null, System.Text.RegularExpressions.Regex.Split(“XYZ 77”, “[^\d]”));