-1

这可能是一个新手问题:

如果看起来像这样,解析 texfile 的最聪明的方法是什么:

material polygon name
0
0
9
            -7          4.5         0
            -7          9.166667            0
            -2.333333           4.5         0

我只对 9 xyz 值感兴趣。但是,我不知道一种将它们过滤掉的安全方法,因为有时信息会像这样写在一行中:

material polygon name 0 0 9 -7 4.5 0 -7 9.166667 0 -2.333333 4.5 0

有时它用空格分隔,有时用制表符分隔。我猜这0 0 9表明后面有 9 个值。到目前为止,我只学会了用.Split(' ')

            System.IO.StreamReader reader = new System.IO.StreamReader(_file);
            string ln = reader.ReadLine();

            while (ln != null)
            {
                if (ln != null && ln[0] != '#')
                {
                    string[] lnsplit = ln.Split(' ');
                    double X = lnsplit[bla];
                    double Y = lnsplit[bla+1];
                    double Z = lnsplit[bla+2];
                }
                ln = occreader.ReadLine();
            }
            occreader.Close();

但这当然只有在文件结构严格的情况下才有效。

4

2 回答 2

1

我会使用RegexOptions.SingleLine启用的正则表达式。就像是 ^material polygon name (?:\d\s*){3}(?:(-?\d+(?:\.\d+)?)\s*){9}$

\s运算符涵盖多行,您可以使用生成的Match对象来拉出您想要的九个值。(来自Captures.Groups[1]

于 2012-06-27T17:01:18.427 回答
0

使用匹配浮点数的正则表达式,例如看到这个问题。然后只需调用 Regex.Match 并跳过前三个匹配项。

于 2012-06-27T17:05:15.723 回答