c#中的分割功能无法正常工作

时间:2017-04-07 10:34:11

标签: c#

static void Main(string[] args)
{
    string Var = ",A,,,B,,C";
    string[] members = Var.Split(',');
    foreach (string member in members)
    {
       Console.WriteLine(member);
    }
    Console.WriteLine(members.Length);
    Console.ReadLine();
}

上述代码的输出

A


B

C
7

7 is length of the array,但我的问题是,当我通过','时  在分裂函数的参数中。

所以为什么它需要初始','作为空格。为什么它需要3'中的2','作为A之后的空间。为什么它需要2'中的1','作为B之后的空间?

3 个答案:

答案 0 :(得分:2)

你问的答案是,这不是空格,但这是空字符串

string可以为空,您将此视为空格。

,,< - ,我们什么都没有,所以split方法添加空字符串。

如果您要删除此内容,则必须在',' StringSplitOptions

之后添加

Var.Split(new char [] {','}, StringSplitOptions.RemoveEmptyEntries);

doc:https://msdn.microsoft.com/pl-pl/library/tabh47cf(v=vs.110).aspx

答案 1 :(得分:0)

/ 对于此问题,只有“split()”函数计数。我们可以赋予任何特殊字符来分割数组元素。 注意:它不适用于单引号和双引号等特殊字符 /

        string Var = "-%%A-,,$$,-B-@@%-C";
        string[] members = Var.Split('-',',','@','$','%');
        foreach (string member in members)
        {
            Console.WriteLine(member);
        }
        Console.WriteLine(members.Length);
        Console.ReadLine();

图像显示输出控制台屏幕:

https://i.stack.imgur.com/aArY5.png

答案 2 :(得分:-1)

因为你在第一个'之前有空格',并且因为B和C之间只有一个占位符?