C#에서 단일 문자열 명령줄 매개변수를 효율적으로 분할하는 방법
C#에서는 실행 파일에 전달된 명령줄 인수 배열을 가져오는 것이 중요한 작업입니다. 매개변수가 단일 문자열로 제공되는 경우 C#이 명령줄에서 직접 매개변수를 지정할 때 매개변수를 처리하는 방법과 유사하게 개별 매개변수를 추출하는 방법이 필요합니다. 이 문서에서는 이를 달성하기 위한 사용자 정의 세분화 방법을 설명합니다.
C#에는 특정 조건에 따라 문자열을 분할하는 표준 함수가 없으므로 자체 확장 메서드를 정의했습니다. Split
:
<code class="language-csharp">public static IEnumerable<string> Split(this string str, Func<char, bool> controller)</code>
이 메서드는 문자열을 분할할 시기를 결정하는 함수를 인수로 받아들입니다. 우리의 경우에는 람다 표현식을 사용합니다:
<code class="language-csharp">Func<char, bool> controller = c => { if (c == '\"') inQuotes = !inQuotes; return !inQuotes && c == ' '; };</code>
이 기능은 큰따옴표와 공백을 확인하여 분할 지점을 결정합니다. 큰따옴표는 공백을 포함할 수 있으므로 특별한 처리가 필요한 인수를 묶습니다.
문자열을 분할한 후 TrimMatchingQuotes
확장 메서드를 사용하여 결과 매개변수를 추가로 처리하고 선행 또는 후행 큰따옴표를 제거합니다.
<code class="language-csharp">public static string TrimMatchingQuotes(this string input, char quote)</code>
이러한 방법을 결합하여 명령줄 인수가 포함된 문자열을 받아들이고 문자열 배열을 반환하는 SplitCommandLine
함수를 만듭니다.
<code class="language-csharp">public static IEnumerable<string> SplitCommandLine(string commandLine) { return commandLine.Split(controller) .Select(arg => arg.Trim(' ').TrimMatchingQuotes('\"')) .Where(arg => !string.IsNullOrEmpty(arg)); }</code>
이 함수는 지정된 기준에 따라 문자열을 분할하고, 공백을 자르고, 주변의 큰따옴표를 제거합니다. 결과 문자열 배열은 C#에서 생성된 명령줄 인수를 정확하게 나타냅니다.
기능을 시연하기 위해 몇 가지 테스트 사례를 제공합니다.
<code class="language-csharp">Test(@"/src:""C:\tmp\Some Folder\Sub Folder"" /users:""[email protected]"" tasks:""SomeTask,Some Other Task"" -someParam", @"/src:""C:\tmp\Some Folder\Sub Folder""", @"/users:""[email protected]""", @"tasks:""SomeTask,Some Other Task""", @"-someParam");</code>
이러한 사용자 정의 분할 기능을 사용하면 C#의 단일 문자열에서 명령줄 인수를 효과적으로 추출하여 필요에 따라 사용할 수 있습니다.
위 내용은 C#의 단일 문자열에서 명령줄 매개 변수를 효과적으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!