Maison > développement back-end > C++ > Comment diviser efficacement les paramètres de ligne de commande en C# ?

Comment diviser efficacement les paramètres de ligne de commande en C# ?

Susan Sarandon
Libérer: 2025-01-15 11:39:50
original
909 Les gens l'ont consulté

How to Efficiently Split Command-Line Parameters in C#?

Compétences en matière de fractionnement des paramètres de ligne de commande C#

Présentation

En C#, extraire un seul argument d'une seule chaîne contenant des arguments de ligne de commande est une tâche courante. Cependant, il se peut qu’il n’existe pas de fonction conçue directement à cet effet. Cet article examine les techniques permettant d'y parvenir à l'aide de fonctionnalités standard ou de solutions personnalisées.

Fonction de partage standard

Malheureusement, C# ne fournit pas de fonction intégrée pour diviser une chaîne en fonction de l'évaluation de caractères individuels. Cela signifie que nous devons nous appuyer sur des approches plus créatives.

Solution personnalisée utilisant la fonction Lambda

Une solution consiste à créer une fonction lambda qui détermine si un caractère spécifique doit diviser la chaîne. En utilisant cette fonction, nous pouvons utiliser la méthode Split de C# pour diviser la chaîne en conséquence. Un exemple est le suivant :

<code class="language-csharp">public static IEnumerable<string> SplitCommandLine(string commandLine)
{
    bool inQuotes = false;

    return commandLine.Split(c =>
    {
        if (c == '\"')
            inQuotes = !inQuotes;

        return !inQuotes && c == ' ';
    })
    .Select(arg => arg.Trim().TrimMatchingQuotes('\"'))
    .Where(arg => !string.IsNullOrEmpty(arg));
}</code>
Copier après la connexion

La méthode d'extension TrimMatchingQuotes supprime les guillemets correspondants du début et de la fin d'une chaîne.

Méthodes d'extension personnalisées Split et Trim

Une autre option consiste à étendre la classe String pour inclure une méthode Split qui accepte une fonction lambda en entrée et une méthode TrimMatchingQuotes qui gère le découpage des guillemets. Ces extensions ressemblent à ceci :

<code class="language-csharp">public static IEnumerable<string> Split(this string str, Func<char, bool> controller)
{
    int nextPiece = 0;

    for (int c = 0; c < str.Length; c++)
    {
        if (controller(str[c]))
        {
            yield return str.Substring(nextPiece, c - nextPiece).Trim();
            nextPiece = c + 1;
        }
    }
    yield return str.Substring(nextPiece).Trim();
}

public static string TrimMatchingQuotes(this string input, char quote)
{
    if ((input.Length >= 2) && (input[0] == quote) && (input[input.Length - 1] == quote))
        return input.Substring(1, input.Length - 2);

    return input;
}</code>
Copier après la connexion

Application complète

Cette approche nous permet de diviser la chaîne d'arguments de la ligne de commande en un seul tableau d'arguments, reproduisant le comportement de spécification des arguments directement sur la ligne de commande.

Conclusion

Bien que C# manque de fonctions spécifiquement pour diviser les arguments de ligne de commande, il offre la flexibilité nécessaire pour implémenter des solutions personnalisées à l'aide de fonctions lambda ou en étendant la classe String. Ces méthodes fournissent des moyens efficaces et fiables pour extraire des paramètres individuels en vue d'un traitement ou d'une exécution ultérieurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal