Разбор консоли доводы приложения


В нашем приложении, консоли, разбор аргументов приложения делается вот так:

using System.Linq;

namespace Generator
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            var param1 = args.SingleOrDefault(arg => arg.StartsWith("p1:"));
            if (!string.IsNullOrEmpty(param1))
            {
                param1  = param1.Replace("p1:", "");
            }
            //...
        }
    }
}

Это должно быть называется так:

`Generator.exe p1:somevalue`

Существует ли лучше/проще способ разбора аргументов?



65322
27
задан 28 января 2011 в 01:01 Источник Поделиться
Комментарии
4 ответа

Я бы рекомендовал воспользовавшись отличный моно.Параметры модуля. Это один .в CS файл, который вы можете бросить в ваш решение и сделать полноценный разбор ГНУ использования getopt-стиле командной строки. (Такие вещи, как Х-У-з, что эквивалентно -ской, или -к стоимости, или ... длинная-опт, и так далее.)

27
ответ дан 28 января 2011 в 09:01 Источник Поделиться

При такой реализации вам придется повторяться для каждого парам.

Альтернатива:

var parsedArgs = args
.Select(s => s.Split(new[] {':'}, 1))
.ToDictionary(s => s[0], s => s[1]);
string p1 = parsedArgs["p1"];

22
ответ дан 28 января 2011 в 01:01 Источник Поделиться

Есть вопрос на переполнение стека. Есть консенсус, похоже, моно.Вариантов, как уже предлагалось здесь josh3736.

4
ответ дан 28 января 2011 в 10:01 Источник Поделиться

Вы могли бы использовать foreach для перебора agruments и затем на ваш аргумент с индексом 1, вы могли бы использовать регулярное выражение для извлечения проанализированного текста после Р1:

1
ответ дан 28 января 2011 в 01:01 Источник Поделиться