c#如何不将分隔符作为单词计数

时间:2015-04-30 07:14:05

标签: c# count delimiter

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

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

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

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

3 个答案:

答案 0 :(得分:2)

你的程序会在你的句子中计算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);
        }
    }

答案 1 :(得分:1)

更改此行:

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

为:

string[] words = x.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);

答案 2 :(得分:1)

问题是多个分隔符出现在另一个之后,因此数组确实不包含任何分隔符,而是null值,其中分隔符之间没有单词。您可以使用

来防止这种情况
x.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries)