>백엔드 개발 >C++ >C#의 단일 문자열에서 명령줄 매개 변수를 효과적으로 분할하는 방법은 무엇입니까?

C#의 단일 문자열에서 명령줄 매개 변수를 효과적으로 분할하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-15 11:54:43779검색

How to Effectively Split Command-Line Parameters from a Single String in C#?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.