我正在尝试解析一些由第三方应用程序返回的数据(一个TSV文件)。我已经将所有数据整齐地解析到每个字段中(请参阅Parse a TSV file),但我不知道如何格式化某些字段。
有时字段中的数据是这样封装的:
=T("[FIELD_DATA]")(我相信这是某种Excel格式。)
当发生这种情况时,特定的字符被CHAR(ASCII_NUM)转义,字符串的其余部分也被封装,就像上面的例子一样,没有只出现在字段开头的=。
那么,有没有人知道我如何解析如下所示的字段:
=T("- Merge User Interface of Global Xtra Alert and EMT Alert")&CHAR(10)&T("- Toaster ?!")&CHAR(10)&T("")&CHAR(10)&T("")&CHAR(10)&T("None")&CHAR(10)&T("")&CHAR(10)&T("None")(任意数量的CHAR/T()组)。
我一直在考虑正则表达式或字符串循环,但我怀疑这是否有效。帮帮忙,有人吗?
发布于 2010-03-11 02:04:52
我会使用类似于Darin的方法,但他的正则表达式对我不起作用。我会用这个:
(=T|&CHAR|&T)(\("*([A-Za-z?!0-9 -]*)"*\))+您将发现Groups[2] (请记住,这些数据的偏移量为零)将是()和""中的数据(如果""存在)。例如,这将会得到:
- Merge User Interface of Global Xtra Alert and EMT Alert
在:
=T("- Merge User Interface of Global Xtra Alert and EMT Alert")
和:
10
在:
&CHAR(10)
如果您有:
&T("")
它将在Groups2中产生一个null。
希望这能有所帮助。
发布于 2010-03-11 01:53:19
class Program
{
public static void Main(string[] args)
{
var input = @"=T(""- Merge User Interface of Global Xtra Alert and EMT Alert"")&CHAR(10)&T(""- Toaster ?!"")&CHAR(10)&T("""")&CHAR(10)&T("""")&CHAR(10)&T(""None"")&CHAR(10)&T("""")&CHAR(10)&T(""None"")";
var matches = Regex.Matches(input, @"T\(\""([^\""]*)\""\)");
foreach (Match match in matches)
{
Console.WriteLine(match.Groups[1].Value);
}
}
}https://stackoverflow.com/questions/2419192
复制相似问题