使用C#中的特定单词分割文件

时间:2020-05-06 09:41:04

标签: c# .net regex split

有一个我想分割的文件

docker run

我想使用 MSH 对其进行拆分,以使结果为字符串数组

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

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

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

否则,在索引1和2分开后,它不应错过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";

2 个答案:

答案 0 :(得分:-1)

您只需为此使用Split()函数。下面生成一个IEnumerable,如果需要,您可以使用ToArray创建一个数组:

void Main()
{
    string s = @"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";

    foreach (var element in s.Split(new string[] { "MSH" }, StringSplitOptions.RemoveEmptyEntries).Select(x => $"MSH{x}"))
    {
        Console.WriteLine(element);
    }
}

答案 1 :(得分:-1)

如果您想拆分MSH,则Cetin Basoz是正确的。这样做会很完美:

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

如果您不区分大小写,则可以使用比以前使用的正则表达式更简单的代码:

var sentences = Regex.Split(a, "MSH", RegexOptions.IgnoreCase);
相关问题