我在使用Split Method()
时遇到问题。
我有一个这样的字符串:
string diagnosis = "001.00 00 002.01 00 003.00 01";
输出应该是:
001.00
002.01
003.00
我尝试用这两种方法删除两位数字:
string[] DiagnosisCodesParts = diagnosis.Split();
if (DiagnosisCodesParts[x].Length > 3)
{
//here
}
和..
string DiagnosisCodestemp = diagnosis.Replace(" 00 ", " ").Replace(" 01 ", " ").Replace(" 02 ", " ")
还有其他方法可以移除这两位数字吗?
答案 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");