locked
Подсчёт одинаковых символов в строке RRS feed

  • Вопрос

  • Вот надо мне подсчитать количество заданных переменных в строке. Например

    int s = 5;
    int d = 7;

    строка

    string sd = "5425989545655";

    результат

    int ss=6;//т.к. шесть пятёрок

    int dd = 0; // т.к. семёрок нет

    нашёл такое выражение - прекрасно считает количество - то что надо

                const string text = "пппррииввет";
                foreach (var letter in text.Distinct().ToArray())
                {
                    var count = text.Count(chr => chr == letter);
                    Console.WriteLine("Количество символов {0} = {1}", letter, count);
                }
                Console.ReadKey();

    но для WIndows 8 видимо не подходит. Все Using - и вроде стоят

    А как можно посчитать количество искомых цифр в строке в Windows 8?


    Спасибо


    1 марта 2013 г. 6:46

Ответы

  • string s = "5425989545655";
    int count = 0;
    foreach (Match m in Regex.Matches(s, "5"))
        count++;
    • Помечено в качестве ответа developers_s 9 марта 2013 г. 12:00
    9 марта 2013 г. 11:56
  • "но для WIndows 8 видимо не подходит. Все Using - и вроде стоят" - тут дело не в Windows 8, а скорее всего в методе Count, который является не стандартным, а самописным методом расширения. Попробуйте так например:

    using System;
    using System.Linq;
    
    namespace Test
    {
      class Program
      {
        static void Main(string[] args)
        {
          string sd = "5425989545655";
          int count = sd.ToCharArray().Where(i => i == '5').Count();
          Console.WriteLine(count);
        }
      }
    }

    • Помечено в качестве ответа developers_s 9 марта 2013 г. 12:33
    9 марта 2013 г. 11:45
  • var text = new char[] { 'п', 'п', 'п', 'р', 'р', 'и', 'и', 'в', 'в', 'е', 'т' };
    foreach (var letter in text.Distinct().ToArray())
    {
        var count = text.Count(chr => chr == letter);
    }
    


    • Помечено в качестве ответа developers_s 2 марта 2013 г. 1:07
    1 марта 2013 г. 7:44

Все ответы

  • var text = new char[] { 'п', 'п', 'п', 'р', 'р', 'и', 'и', 'в', 'в', 'е', 'т' };
    foreach (var letter in text.Distinct().ToArray())
    {
        var count = text.Count(chr => chr == letter);
    }
    


    • Помечено в качестве ответа developers_s 2 марта 2013 г. 1:07
    1 марта 2013 г. 7:44
  • Никак не могу сам решить? А как всё таки проверить конкретную цифру? Например сколько 5-к ?

    нашел Это но тут по-моему не совсем то


    Спасибо



    9 марта 2013 г. 11:21
  • "но для WIndows 8 видимо не подходит. Все Using - и вроде стоят" - тут дело не в Windows 8, а скорее всего в методе Count, который является не стандартным, а самописным методом расширения. Попробуйте так например:

    using System;
    using System.Linq;
    
    namespace Test
    {
      class Program
      {
        static void Main(string[] args)
        {
          string sd = "5425989545655";
          int count = sd.ToCharArray().Where(i => i == '5').Count();
          Console.WriteLine(count);
        }
      }
    }

    • Помечено в качестве ответа developers_s 9 марта 2013 г. 12:33
    9 марта 2013 г. 11:45
  • string s = "5425989545655";
    int count = 0;
    foreach (Match m in Regex.Matches(s, "5"))
        count++;
    • Помечено в качестве ответа developers_s 9 марта 2013 г. 12:00
    9 марта 2013 г. 11:56
  • const string text = "пппррииввет";
    foreach (var letter in text.Distinct().ToArray())
    {
        var count = Regex.Matches(text, letter.ToString()).Count;
        Console.WriteLine("Количество символов {0} = {1}", letter, count);
    }

    28 февраля 2017 г. 7:37