Подтвердить что ты не робот

Как удалить все алфавитные символы из строки?

У меня есть строка, содержащая буквенные символы, например:

  1. 254,69 метра
  2. 26,56 см
  3. 23,36 дюйма
  4. 100,85 футов

Я хочу удалить все буквенные символы (единицы) из вышеупомянутых строк, чтобы я мог вызвать метод double.Parse().

4b9b3361

Ответ 1

Это должно работать:

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

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

Ответ 2

Вы должны решить это с помощью Regex. Добавьте в проект следующую ссылку:

using System.Text.RegularExpressions;

после этого вы можете использовать следующее:

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

Предполагая, что у вас есть только буквенные символы и пробелы как единицы.

Ответ 3

Использование LINQ:

using System.Linq;

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

Ответ 4

Ответы Regex и Vlad LINQ хорошо освещают это решение. И оба хороших варианта.

У меня была похожая проблема, но я также хотел только явно убрать буквы, а не убирать пробелы и т.д. С этим вариантом.

Я также хотел его использовать, как показано ниже. Любое из других решений может быть упаковано аналогичным образом.

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 LINQ or the Regex Example
    return new string(self.Where(c=>(Char.IsDigit(c)||c=='.'||c==',')).ToArray()) ;  // See Vlad's

}

Это тогда будет использоваться, например:

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

Ответ 5

Используйте API CharMatcher из библиотеки Google Guava:

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

Делаем static-import CharMatcher.inRange(..). Вы можете урезать результаты для конечного пространства.