这可能是一个新手问题:
如果看起来像这样解析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();
但这当然只有在文件严格结构化的情况下才有效。
答案 0 :(得分:1)
我会使用启用了RegexOptions.SingleLine
的正则表达式。就像是
^material polygon name (?:\d\s*){3}(?:(-?\d+(?:\.\d+)?)\s*){9}$
\s
运算符包含多行,您可以使用生成的Match
对象来提取所需的九个值。 (来自Captures
的{{1}}属性。
答案 1 :(得分:0)
使用与浮点数匹配的正则表达式,例如,请参阅this question。 然后只需调用Regex.Match并跳过前三场比赛。