Манипулирование строками с использованием метода разделения - PullRequest
4 голосов
/ 10 ноября 2011

У меня возникла проблема с использованием Split Method().

У меня есть такая строка:

string diagnosis = "001.00 00 002.01 00 003.00 01";

И вывод должен быть:

001.00
002.01
003.00

Iпытался этим двумя способами убрать две цифры:

1

    string[] DiagnosisCodesParts = diagnosis.Split();
    if (DiagnosisCodesParts[x].Length > 3)
       {
         //here
       }

И ..

2

string DiagnosisCodestemp = diagnosis.Replace(" 00 ", " ").Replace(" 01 ", " ").Replace(" 02 ", " ") 

Isесть другой способ убрать две цифры?

Ответы [ 7 ]

7 голосов
/ 10 ноября 2011

Самым понятным для меня будет

Regex.Matches(diagnosis, @"\d+\.\d+").Cast<Match>().Select(m => m.Value);
3 голосов
/ 10 ноября 2011

Вы можете сделать это с помощью регулярных выражений.Пример:

var data = "001.00 00 002.01 00 003.00 01";

var re = new Regex(@"(\d+\.\d+)\ \d+\ ?");
var matches = re.Matches(data);

for (int i = 0; i < matches.Count; i++ )
{
    var m = matches[i];
    Console.WriteLine(m.Groups[1]);
}

Console.ReadLine();

Это выводит:

001.00
002.01
003.00
1 голос
/ 10 ноября 2011

Это будет работать -

var arr = System.Text.RegularExpressions.Regex.Split("001.00 00 002.01 00 003.00 01",@"\s\d{2}\s*").Take(3);
1 голос
/ 10 ноября 2011

Вы можете отфильтровать результат, чтобы он содержал только строки длиной более двух символов:

string[] DiagnosisCodesParts = diagnosis.Split().Where(s => s.Length > 2).ToArray();
1 голос
/ 10 ноября 2011

Вы можете извлечь части, содержащие более трех последовательных символов, например:

var resultSet = from sz in diagnosis.Split(new char[] {' '})
                  where sz.Length > 3
                  select sz;

или получить любую строку с десятичной точкой в ​​ней:

var resultSet = from sz in diagnosis.Split(new char[] {' '})
                  where sz.Contains(".")
                  select sz;

, затем вы можетевыведите это так:

foreach(var entry in resultSet)
    Console.WriteLine(entry);
1 голос
/ 10 ноября 2011

Если мы можем полагаться, что допустимая длина элемента равна 6, то:

var items = diagnosis.Split(' ')
                     .Where(item => item.Length == 6)
                     .ToList();

Если условие равно Длина элемента БОЛЬШЕ 2:

var items = diagnosis.Split(' ')
                     .Where(item => item.Length > 2)
                     .ToList();
0 голосов
/ 10 ноября 2011

Вы можете использовать это и удалить пустые строки

var DiagnosisCodesParts = Regex.Split(diagnosis, "\\s\\d\\d\\s?");

или используйте это и обрежьте результаты.

var DiagnosisCodesParts = Regex.Split(diagnosis, "\\d\\d");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...