计算单词并从字符串中提取数字并将它们相加

时间:2015-02-09 14:56:40

标签: c# numbers

1)我需要计算句子里有多少单词。

但是如果我有一个以上的空白区怎么办?它算作一个词。需要解决方案。

There is four words. / count as 4 words
There is four  words. / count as 5 words

我用:

 int countWords = txt.Split().Length;

2)我需要从字符串中提取数字然后得到总和。我的代码无效,方法错误没有重载。

我的所有代码:

            Console.Write("Ievadiet tekstu: ");
            string txt = Console.ReadLine();
            int sum = 0;


            int countWords = txt.Split().Length;

            foreach (char num in txt)
            {
                if (char.IsDigit(num))
                    sum += Int32.TryParse(num).ToString();
            }

            Console.WriteLine("There are {0} words in this sentence.",countWords);
            Console.WriteLine("Summ is "+sum);

2 个答案:

答案 0 :(得分:2)

String.Split的重载与StringSplitOptions.RemoveEmptyEntries一起使用。您可以使用空char[](或string[])来获取与String.Split相同的行为而不带参数,以便它按所有white-space characters分隔,如空格,制表符或新线字符。

如果您想将可以解析为int的“字词”相加,那么请对int.TryParse提取的所有字词使用String.Split。您可以使用LINQ:

string[] words = text.Split(new char[] {}, StringSplitOptions.RemoveEmptyEntries);
int wordCount = words.Length;
int num = 0;
int sum = words.Where(w => int.TryParse(w, out num)).Sum(w => num);

答案 1 :(得分:0)

这是一个简单的控制台应用程序,可以执行您的操作。 它使用正则表达式捕获数字字符并对它们求和。 TryParse只是一个故障安全(我认为在这种情况下不需要它,因为正则表达式确保只捕获数字)。

    static void Main(string[] args)
    {
        Regex digitRegex = new Regex("(\\d)");
        string text = Console.ReadLine();

        int wordCount = text.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries).Length;
        int sum = 0;
        foreach (Match x in digitRegex.Matches(text, 0))
        {
            int num;
            if (int.TryParse(x.Value, out num))
                sum += num;
        }

        Console.WriteLine("Word Count:{0}, Digits Total:{1}", wordCount, sum);
        Console.ReadLine();
    }

希望它有所帮助。干杯