使用拆分方法的字符串操作

时间:2011-11-10 14:44:00

标签: c# string split

我在使用Split Method()时遇到问题。

我有一个这样的字符串:

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

输出应该是:

001.00
002.01
003.00

我尝试用这两种方法删除两位数字:

1

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

和..

2

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

还有其他方法可以移除这两位数字吗?

7 个答案:

答案 0 :(得分:7)

对我来说最清楚

Regex.Matches(diagnosis, @"\d+\.\d+").Cast<Match>().Select(m => m.Value);

答案 1 :(得分:3)

您可以使用正则表达式执行此操作。示例:

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

答案 2 :(得分:1)

如果我们可以依赖有效项目长度为6:

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

如果条件是项目长度大于2:

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

答案 3 :(得分:1)

您可以提取具有三个以上连续字符的部分,如下所示:

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);

答案 4 :(得分:1)

您可以过滤结果,使其仅包含长度超过两个字符的字符串:

string[] DiagnosisCodesParts = diagnosis.Split().Where(s => s.Length > 2).ToArray();

答案 5 :(得分:1)

这可行 -

var arr = System.Text.RegularExpressions.Regex.Split("001.00 00 002.01 00 003.00 01",@"\s\d{2}\s*").Take(3);

答案 6 :(得分:0)

你可以使用它并消除空字符串

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

或使用此功能并修剪结果。

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