首页 > 解决方案 > 使用 C# 中的特定单词拆分文件

问题描述

有一个文件我要拆分

MSH|^~\&||||^asdasdasd|||asdasd|637226866166648574|637226866166648574|2.4
EVN|asd|20200416|20200416
PID|1|PW9074asdasd41|asd|PW907441|asdsad^wqe^wqeqwe||19700524|M
MSH|^~\&||||^qweqwewqe|||qwewqeqw|637226866166648574|637226866166648574|2.4
EVN|P03|20200416|20200416
PID|1|PW907441|PW907441|PW907441|Purvis^Walter^Rayshawn||19700524|M

我想使用MSH拆分它,以便结果是一个字符串数组

array[0]=
"MSH|^~\&||||^asdasdasd|||asdasd|637226866166648574|637226866166648574|2.4
EVN|asd|20200416|20200416
PID|1|PW9074asdasd41|asd|PW907441|asdsad^wqe^wqeqwe||19700524|M";

array[1]=
"MSH|^~\&||||^asdasdasd|||asdasd|637226866166648574|637226866166648574|2.4
EVN|asd|20200416|20200416
PID|1|PW9074asdasd41|asd|PW907441|asdsad^wqe^wqeqwe||19700524|M";

到目前为止我已经尝试过:

string[] sentences = Regex.Split(a, @"\W*((?i)MSH(?-i))\W*");

结果:

array[0]="";
array[1]="MSH";
array[2]="asdasdasd|||asdasd|637226866166648574|637226866166648574|2.4
    EVN|asd|20200416|20200416
    PID|1|PW9074asdasd41|asd|PW907441|asdsad^wqe^wqeqwe||19700524|M";
array[3]="MSH";
array[4]="asdasdasd|||asdasd|637226866166648574|637226866166648574|2.4
    EVN|asd|20200416|20200416
    PID|1|PW9074asdasd41|asd|PW907441|asdsad^wqe^wqeqwe||19700524|M";

|^~\&||||^或者至少在索引 1 和 2 中拆分后它不应该错过

标签: c#.netregexsplit

解决方案


如果您想拆分 MSH,Cetin Basoz 是对的。它会完美地做到这一点:

var sentences = a.Split(new String[] { "MSH" }, StringSplitOptions.RemoveEmptyEntries);

如果您想不区分大小写,可以使用比您之前使用的正则表达式简单得多的方法:

var sentences = Regex.Split(a, "MSH", RegexOptions.IgnoreCase);

推荐阅读