ti-enxame.com

Como você remove todos os caracteres alfabéticos de uma string?

Eu tenho uma string contendo caracteres alfabéticos, por exemplo:

  1. 254,69 metros
  2. 26,56 cm
  3. 23,36 polegadas
  4. 100,85 pés

Eu quero remover todos os caracteres alfabéticos (unidades) das strings acima mencionadas para que eu possa chamar o método double.Parse ().

37
Ashish Ashu

Isso deve funcionar:

// add directive at the top 
using System.Text.RegularExpressions;

string numberOnly = Regex.Replace(s, "[^0-9.]", "")
93
Pranay Rana

Você deve ser capaz de resolver isso usando o Regex. Adicione a seguinte referência ao seu projeto:

using System.Text.RegularExpressions;

depois disso, você pode usar o seguinte:

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

Supondo que você tenha apenas caracteres alfabéticos e espaço como unidades.

21
froeschli

Usando o LINQ:

using System.Linq;

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

O Regex e as respostas de Vlad do LINQ cobrem bem a solução. E são boas opções.

Eu tive um problema semelhante, mas eu também queria apenas descascar explicitamente as letras, e não despir espaço em branco ou etc, com essa variante.

Eu também queria que fosse utilizável como abaixo. Qualquer uma das outras soluções pode ser empacotada de maneira semelhante.

public static string StripAlpha(this string self)
{
    return new string( self.Where(c => !Char.IsLetter(c)).ToArray() );
}

public static string StripNonNumeric(this string self)
{
    // Use Vlad's LINQ or the Regex Example
    return new string(input.Where(c=>(Char.IsDigit(c)||c=='.'||c==',')).ToArray()) ;  // See Vlad's

}

Isso então seria usado como:

var newString = someString.StripAlpha();
var newString2 = someString.StripNonNumeric();
0
Greg