【发布时间】:2013-08-26 11:57:22
【问题描述】:
我需要解析一个 EDI 文件,其中分隔符是 +、: 和 ' 符号,转义 (release) 字符是 ?。
你先分割成段
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 是否可行,以及正则表达式分隔符应该是什么样子。
【问题讨论】:
-
在您的示例数据中,我没有看到任何
',那么您如何围绕这些进行拆分? -
我不想包含整个文件,所以示例数据只是已经解析的那些段中的一行。
-
好的。所以你想在
+前面没有?的地方拆分,对吧?