String.Split()的空字符

时间:2017-04-03 14:59:53

标签: c# string

我正在研究OBJ文件解析器,我需要获取有关面部的信息。 在OBJ中,有时看起来像f 1//1 2//1 3//1或类似:f 1/1/1 2/4/1 3/2/1。我想要得到这些数字:

int[] facePointerValues = Array.ConvertAll(facePointer.Split('/'), int.Parse);

如果“f 1/1/1 2/4/1...”有效,但问题出现在:“f 1//1 2//1...”,因为“/”之间有空字符。如何解决?

1 个答案:

答案 0 :(得分:0)

正如评论中提到的那样,你可以告诉Split()忽略空条目,但最终你的数组大小为2而不是3。

或者,您可以选择将0用作空值:

int[] facePointerValues = Array.ConvertAll(facePointer.Split('/'),
                              s => s.Length < 1 ? 0 : int.Parse(s));

这样,您仍然总是以3的数组大小结束。