c# - 使用 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 中拆分后它不应该错过
解决方案
如果您想拆分 MSH,Cetin Basoz 是对的。它会完美地做到这一点:
var sentences = a.Split(new String[] { "MSH" }, StringSplitOptions.RemoveEmptyEntries);
如果您想不区分大小写,可以使用比您之前使用的正则表达式简单得多的方法:
var sentences = Regex.Split(a, "MSH", RegexOptions.IgnoreCase);
推荐阅读
- web-services - 如何从具有多个 Places_id 的地址获取所有信息
- ios - SwiftUI:VStack 中的 Text + TextField 导致“无法同时满足约束”。
- scala - 如何在 Scala 数值泛型函数中设置默认类型?
- oracle - Oracle Cloud > utl_http 失败并出现 ORA-29273:HTTP 请求失败 ORA-29024:证书验证失败 ORA-06512
- node.js - 获取 SignatureDoesNotMatch:使用 multers3 node.js 将图像上传到 DigitalOcean Spaces 时出现空错误
- c# - 如何在一个网格视图中显示两个数据源
- vb.net - 过程:标准输出
- javascript - 下载 SVG 文件
- c - 当两个信号量同时变化并且两个信号量之一不能立即递减时会发生什么?
- javascript - 输入字段属性 selectionStart / selectionEnd 延迟更新