Pisah rentetan parameter baris arahan ke dalam tatasusunan rentetan dalam C#
Dalam C#, argumen baris arahan dihantar sebagai tatasusunan rentetan string[]
. Persoalannya ialah bagaimana untuk mengekstrak tatasusunan ini daripada rentetan tunggal yang mengandungi parameter baris arahan?
Tiada fungsi standard yang tersedia secara langsung untuk menyelesaikan tugas ini. Walau bagaimanapun, kita boleh menggunakan fungsi tersuai atau ungkapan biasa untuk memisahkan rentetan dengan betul.
Rentetan boleh dibahagikan menggunakan fungsi tersuai berdasarkan semakan aksara. Fungsi ini memeriksa setiap aksara dan menentukan sama ada rentetan itu harus dipecahkan. Borang fungsi adalah seperti berikut:
<code class="language-csharp">public static IEnumerable<string> SplitCommandLine(string commandLine) // ...</code>
Algoritma adalah seperti berikut:
inQuotes
kepada false
. inQuotes
jika aksara ialah '"'.inQuotes
ialah false
dan wataknya ialah ' '. Fungsi boleh dilanjutkan menggunakan kaedah sambungan berikut:
public static IEnumerable<string> Split(this string str)
public static string TrimMatchingQuotes(this string input, char quote)
Untuk menggunakan fungsi ini, sediakan rentetan tunggal yang mengandungi argumen baris arahan dan terima tatasusunan string[]
yang mengandungi argumen individu:
<code class="language-csharp">string[] parameterArray = SplitCommandLine(parameterString).ToArray();</code>
<code class="language-csharp">public static void Test(string cmdLine, params string[] args) // ...</code>
Ujian tersuai boleh digunakan untuk mengesahkan ketepatan algoritma pembahagian. Fungsi ini membandingkan tatasusunan berpecah dengan tatasusunan yang dijangkakan dan menegaskan bahawa ia adalah sama.
Dengan menggunakan fungsi tersuai atau ungkapan biasa, kami boleh memisahkan rentetan yang mengandungi parameter baris perintah dengan berkesan kepada tatasusunan string[]
, menangkap parameter individu, sama seperti cara C# lakukan apabila menentukan parameter pada baris arahan .
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan String Parameter Baris Perintah Tunggal ke dalam Tatasusunan Rentetan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!