在c#中使用正则表达式拆分字符串

时间:2014-01-10 10:22:12

标签: c# split character

我有一个比较文本文件的程序。接收2个文件吐出1.输入文件具有与此类似的数据行

tv_rocscores_DeDeP005M3TSub.csv FMR: 0.0009 FNMR: 0.023809524 SCORE: -4  Conformity: True
tv_..............P006............................................................
tv_..............P007............................................................

等等。

出于我最初的目的,我基于空格分割线条,以获得相应的值。但是,对于第一个字段,tv_rocscores_DeDeP005M3TSbu.csv我只需要P005而不需要其余的。我也不能选择位置编号,因为短语中P005的位置对于每个文件都不相同。

关于我如何拆分这个以便我能用P005确定我的第一个字段的任何建议?

5 个答案:

答案 0 :(得分:2)

你的问题有点不清楚。如果您正在寻找模式,请说“P +三位数”,例如“P005”您可以使用正则表达式

  String str = @"tv_rocscores_DeDeP005M3TSub.csv FMR: 0.0009 FNMR: 0.023809524 SCORE: -4  Conformity: True";

  String[] parts = str.Split(' ');
  parts[0] = Regex.Match(parts[0], @"P\d\d\d").Value; // <- "P005"

答案 1 :(得分:1)

要提取所需的部分,我会尝试这样的事情:

 var parts = str.Split(' ');
 var number = Regex.Match(parts[0], ".*?(?<num>P\d+).*?").Groups["num"].Value;

或者,如果您只知道其三位数,则可以将正则表达式更改为.*?(?<num>P\d{3}).*?

希望能解决您的问题:)

答案 2 :(得分:0)

如何检查第一个字段是否包含P005

bool hasP005 = field1.Contains("P005");

答案 3 :(得分:0)

你的问题不明确。你不能用字符串替换第一个字段吗?

string[] parts = str.Split(' ');
parts[0] = "P005";

答案 4 :(得分:0)

您是否希望尝试包含该字符串的字段?如果是这样,那么你可以使用一些linq

var field = s.Split(' ').Where(x => x.Contains("P005")).ToList()[0];
相关问题