我需要解析一个 EDI 文件,其中的分隔符是+
,:
而'
符号和转义(释放)字符是?
. 你首先分成几段
var data = "NAD+UC+ABC2378::92++XYZ Corp.:Tel ?: ?+90 555 555 11 11:Mobile1?: ?+90 555 555 22 22:Mobile2?: ?+90 555 555 41 71+Duzce+Seferihisar / IZMIR++35460+TR"
var segments = data.Split('\'');
然后通过 将每个段拆分为段数据元素+
,然后通过 将段数据元素拆分为组件数据元素:
。
var dataElements = segments[0].Split('+');
由于使用了释放字符,上述示例字符串未正确解析。我有处理这个的特殊代码,但我认为这应该是可行的
Regex.Split(data, separator);
我不熟悉正则表达式,到目前为止还没有找到方法。到目前为止我想出的最好的是
string[] lines = Regex.Split(data, @"[^?]\+");
它省略了符号前的字符+
。
NA
U
ABC2378::9
+XYZ Corp.:Tel ?: ?+90 555 555 11 11:Mobile1?: ?+90 555 555 22 22:Mobile2?: ?+90 555 555 41 7
Duzc
Seferihisar / IZMI
+3546
TR
正确的结果应该是:
NAD
UC
ABC2378::92
XYZ Corp.:Tel ?: ?+90 555 555 11 11:Mobile1?: ?+90 555 555 22 22:Mobile2?: ?+90 555 555 41 7
Duzce
Seferihisar / IZMIR
35460
TR
所以问题是使用 Regex.Split 是否可行,以及正则表达式分隔符应该是什么样子。