C# 带有字符串的空字符。Split()

C# 带有字符串的空字符。Split(),c#,string,C#,String,我正在研究OBJ文件解析器,我需要获得关于人脸的信息。 在OBJ中,脸有时看起来是这样的:f1//12//13//1或者类似的:f1/1/12/4/13/2/1。我正在尝试获取这些数字: int[] facePointerValues = Array.ConvertAll(facePointer.Split('/'), int.Parse); 如果“f1/1/12/4/1…””它可以工作,但问题出现在“f1//12//1…””时,因为“/”之间的字符为空。如何解决这个问题?正如peeople在

我正在研究OBJ文件解析器,我需要获得关于人脸的信息。 在OBJ中,脸有时看起来是这样的:
f1//12//13//1
或者类似的:
f1/1/12/4/13/2/1
。我正在尝试获取这些数字:

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

如果“
f1/1/12/4/1…”
”它可以工作,但问题出现在“
f1//12//1…”
”时,因为“/”之间的字符为空。如何解决这个问题?

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

或者,您可以有选择地将0用于空值:

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

这样,你仍然会得到3的数组大小。

facePointer.Split(新字符[]{'/},StringSplitOptions.RemoveEmptyEntries)
我真不敢相信我找不到这个问题的重复项……我怀疑你的代码是否能与
f1/1/12/4/1
,如何将
f1
12
解析为int?@Tim,因为字符串[]facePointers=fileLine.Substring(2).Split(“”);