2010-09-02 15 views

Respuesta

74

esto debería funcionar:

Regex.Replace(s, "[^0-9.]", "") 
+16

Probablemente quieren preservar cualquier signo: ' "[^ 0-9 + -.]"' – BillP3rd

+0

@ BillP3rd - pero quiere quitar alphabates y la cadena es de unidades con número. ¿De verdad crees que es necesario? –

+0

Gracias Pranay por la solución. BillP3rd, en este momento no necesito signos +, pero gracias por la actualización, puede que en el futuro quiera conservar las señales. –

15

usted debería ser capaz de resolver esto usando expresiones regulares. Añadir la siguiente referencia a su proyecto:

using System.Text.RegularExpressions; 

después de que se puede utilizar lo siguiente:

string value = Regex.Replace(<yourString>, "[A-Za-z ]", ""); 
double parsedValue = double.Parse(value); 

Asumiendo que tiene sólo caracteres alfabéticos y el espacio como unidades.

0

Uso CharMatcher API de la biblioteca de guayaba de Google:

String magnitudeWithUnit = "254.69 meter"; String magnitude = CharMatcher.inRange('a', 'z').or(inRange('A', 'Z')).removeFrom(magnitudeWithUnit);

Haz CharMatcher.inRange-importación estática (..). Puede recortar los resultados para el espacio final.

+2

Realmente no recomendaría una dependencia externa para algo que sea compatible con C#/BCL –

2

mediante LINQ:

using System.Linq; 

string input ="57.20000 KG "; 
string output = new string(input.Where(c=>(Char.IsDigit(c)||c=='.'||c==',')).ToArray()); 
+0

Es solo una pequeña cosa: esta solución elimina la dependencia de System.Text.RegularExpressions - que no se usa comúnmente en la aplicación actual en la que estoy trabajando . – condiosluzverde

Cuestiones relacionadas