Извлечение чисел из строки - PullRequest
2 голосов
/ 24 августа 2011

Я пытаюсь манипулировать строкой ..

Например:

string DiagnosesString  "250.00 03 350.0001 450.00 01 550.00 02";

выход

250.00
350.00
450.00
550.00

Я пытался использовать метод Сплита. Как вы можете видеть на моем примере в 350.0001 и его вывод составляет 350.00.

Я могу удалить 03, 02 и т. Д.

Вопрос: 1.) Как я сниму o1 с 350.0001, получу только 350.00?

вот мой код:

string DiagnosisCodestemp = DiagnosesString.Replace(" 01 ", " ").Replace(" 02 ", " ").Replace(" 03 ", " ").Replace(" 04 ", " ").Replace(" 05 ", " ").Replace(" 06 ", " ").Replace(" 07 ", " ");
string[] DiagnosisCodesParts = DiagnosisCodestemp.Split();

Ответы [ 12 ]

1 голос
/ 24 августа 2011

вы можете сопоставить числа с помощью регулярного выражения

/\d+\.\d+/

, но это зависит от того, можете ли вы определить свое число более точно или нет.

decimal number;
string DiagnosesString = "250.00 03 350.0001 450.00 01 550.00 02";

foreach(var num in Regex.Matches(DiagnosesString, @"\d+\.\d+"))
{
    Decimal.TryParse(num.ToString(), out number);
    Console.WriteLine(number.ToString("0.00"));
}

возможно вам даже понадобится регулярное выражение типаэто:

/(\d+.\d\d)\d*/

для сопоставления только чисел в формате 0,00 ... вы должны предоставить больше данных о том, как вы хотите, чтобы ваши данные были проанализированы ..

1 голос
/ 24 августа 2011

Попробуйте выполнить аппликацию пробела.

string DiagnosisCodestemp = DiagnosesString.Replace(" 01 ", " ").Replace(" 02 ", " ").Replace(" 03 ", " ").Replace(" 04 ", " ").Replace(" 05 ", " ").Replace(" 06 ", " ").Replace(" 07 ", " "); 
string[] DiagnosisCodesParts = DiagnosisCodestemp.Split(' '); 

Это должно создать массив со значениями, и вы можете отфильтровать нужные значения.Затем можно преобразовать значения в десятичное и округлить до 2 разрядов, чтобы удалить дополнительные значения.

...