c#如何不将分隔符计算为一个单词

c#如何不将分隔符计算为一个单词,c#,count,delimiter,C#,Count,Delimiter,我应该输入一个句子,例如你好,我叫安!它将打印出5个单词的数量,并打印出如下单词: 你好 我的 名称 是 安 然而,我的计算特殊字符作为一个词,所以我的句子上面被认为有7个词。请帮忙!提前感谢:) 更改此行: string[] words = x.Split(delimiterChars); 致: 问题是多个分隔符一个接一个出现,因此数组实际上不包含任何分隔符,而是包含分隔符之间没有单词的null值。您可以通过使用 x.Split(delimiterChars, StringSplitOpti

我应该输入一个句子,例如你好,我叫安!它将打印出5个单词的数量,并打印出如下单词: 你好 我的 名称 是 安

然而,我的计算特殊字符作为一个词,所以我的句子上面被认为有7个词。请帮忙!提前感谢:)

更改此行:

string[] words = x.Split(delimiterChars);
致:


问题是多个分隔符一个接一个出现,因此数组实际上不包含任何分隔符,而是包含分隔符之间没有单词的
null
值。您可以通过使用

x.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries)

您的程序在您的句子中不计算2个空条目。这是因为逗号和空格的组合。例如,它为它们之间的0字符条目创建一个数组条目。您可以使用
StringSplitOptions.RemoveEmptyEntries
来避免这种情况

代码应该如下所示:

static void Main(string[] args)
{
    char[] delimiterChars = { ' ', ',', '.', ':', '?', '!' };
        Console.Write("Enter a sentence: ");
        string x = "Hello, my name is Ann!";
        Console.WriteLine("The sentence is: ", x);
        string[] words = x.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);
        Console.WriteLine("{0} words in text:", words.Length);

        foreach (string s in words)
        {
            Console.WriteLine(s);
        }
    }
x.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries)
static void Main(string[] args)
{
    char[] delimiterChars = { ' ', ',', '.', ':', '?', '!' };
        Console.Write("Enter a sentence: ");
        string x = "Hello, my name is Ann!";
        Console.WriteLine("The sentence is: ", x);
        string[] words = x.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);
        Console.WriteLine("{0} words in text:", words.Length);

        foreach (string s in words)
        {
            Console.WriteLine(s);
        }
    }