0

Было просто интересно, есть ли способ чтения в командной строке в консольном приложении со значениями. Я могу читать в командной строке достаточно легко, но не могу найти никакой информации о получении значений из командной строки.C# - Чтение командной строки с соответствующими значениями

Например (арг):

aTest = 5; bTest = 13; 

Будет ли способ читать в арг aTest адъюнкт-то с междунар 5 ...?

Спасибо :)

+2

Вы попробовали что-то разобрать эти значения? Какие результаты у вас есть сейчас? –

ответ

2

я написал вспомогательный метод для меня по времени назад, который извлекает значение Swtich или возвращается, если настоящий или нет - это поможет вам, возможно.

/// <summary> 
/// If the arguments are in the format /member=value 
/// Than this function returns the value by the given membername (!casesensitive) (pass membername without '/') 
/// If the member is a switch without a value and the switch is preset the given ArgName will be returned, so if switch is presetargname means true.. 
/// </summary> 
/// <param name="args">Console-Arg-Array</param> 
/// <param name="ArgName">Case insensitive argname without /</param> 
/// <returns></returns> 
private static string getArgValue(string[] args, string ArgName) 
{ 
    var singleFound = args.Where(w => w.ToLower() == "/" + ArgName.ToLower()).FirstOrDefault(); 
    if (singleFound != null) 
     return ArgName; 


    var arg = args.Where(w => w.ToLower().StartsWith("/" + ArgName.ToLower() + "=")).FirstOrDefault(); 
    if (arg == null) 
     return null; 
    else 
     return arg.Split('=')[1]; 
} 

Пример:

static void Main(string[] args) 
{ 
    var modeSwitchValue = getArgValue(args, "mode"); 
    if (modeSwitchValue == null) 
    { 
     //Argument not present 
     return; 
    } 
    else 
    { 
     //do something 
    } 
    } 
+0

Ah nice- спасибо! arg.Split Я не знал об этой функции! Благодарим Вас :) :) C# гвоздем:/ – Anonagon

+0

@Anonagon, если она соответствует вашим требованиям - знак как ответ плз;) – Cadburry

+0

Почему бы не перенести отчетности в в FirstOrDefault? args.FirstOrDefault (w => w.ToLower() == "/" + ArgName.ToLower()); должен давать тот же результат, то же самое со вторым утверждением. –

0

Это работает найти для ввода, как это предусмотрено:

var args = "aTest = 5; bTest = 13;"; 

var values = 
    args 
     .Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries) 
     .Select(x => x.Trim().Split('=').Select(y => y.Trim()).ToArray()) 
     .ToDictionary(x => x[0], x => int.Parse(x[1])); 

Я получаю этот результат:

result

Смежные вопросы