我有一个比较文本文件的程序。接收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确定我的第一个字段的任何建议?
答案 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];