Как я могу разобрать целое число из строки, предоставленной пользователем - PullRequest
0 голосов
/ 23 июня 2011

У меня есть спецификация, в которой пользователю необходимо ввести строку пары координат, например:

{{2,3}, {9,0}}

это координаты линии на двумерной оси.

Я хочу динамически анализировать эту строку ввода пользователя во время выполнения в C # и вводить эти координаты в двумерный массив. Я знаю, что мы можем сделать жестко:

int[,] CoOrdinates = {{2,3}, {9,0}};

но я не знаю, как заставить пользователя ввести строку и получить координаты из строки для динамического сохранения в массиве.

Я использую Console.Readline (); чтобы пользователь ввел координаты.

Пожалуйста, помогите, спасибо!

Ответы [ 4 ]

1 голос
/ 23 июня 2011

Я бы использовал регулярное выражение (Regex класс в C #) для разбора битов нужной вам строки, а затем Int32.TryParse() для преобразования строки в число. Этот является хорошим ресурсом для создания регулярных выражений, а this - мой предпочтительный тестер регулярных выражений.Удачи.

0 голосов
/ 23 июня 2011

Это не супер элегантно, но я думаю, что результат - то, что вы ожидаетебыть достаточно простым для реализации.

0 голосов
/ 23 июня 2011

Быстрый ответ:

    public void IntegerReader()
    {
        string integers = Console.ReadLine();

        string[] split = integers.Split(',');

        int result;

        foreach (string s in split)
        {
            if (!string.IsNullOrEmpty(s.Trim()))
                if (int.TryParse(s.Trim(), out result))
                    Console.WriteLine(result);
        }
    }
0 голосов
/ 23 июня 2011
            string s = "{{2,3}, {9,0}}";
            string p = "{(?<x>\\d),(?<y>\\d)}";
            Regex regex = new Regex(p);
            MatchCollection ms = regex.Matches(s);
            int[,] cood = new int[ms.Count, ms.Count];
            int i =0;
            foreach (Match m in ms)
            {
                cood[i,0] = int.Parse(m.Groups["x"].Value);
                cood[i, 1] = int.Parse(m.Groups["y"].Value);
                i++;
            }

Вы можете использовать TryParse, если ожидается неправильное значение в координатах

...