Fermer

avril 8, 2019

Manipulations de chaînes utiles dans VB.NET


Du point de vue du développeur, l’un des principaux arguments de vente de XF OneStream est le pouvoir de codage et la flexibilité fournis par VB.NET. Dans cet article, je souhaitais partager quelques astuces utiles lors de l'utilisation de chaînes dans les applications OneStream.

Text.StringBuilder

Premièrement, toute chaîne complexe composée de différentes parties bénéficiera de l'utilisation de Text.StringBuilder. classe. Il en résulte non seulement un code plus lisible, mais également une économie de mémoire en cas de manipulations intenses des chaînes, en particulier à l'intérieur des boucles. Voici l'explication de Microsoft:

L'objet String est immuable. Chaque fois que vous utilisez l'une des méthodes de la classe System.String, vous créez un nouvel objet chaîne en mémoire, ce qui nécessite une nouvelle allocation d'espace pour ce nouvel objet. Dans les cas où vous devez effectuer des modifications répétées sur une chaîne, la surcharge associée à la création d'un nouvel objet String peut être coûteuse. La classe System.Text.StringBuilder peut être utilisée lorsque vous souhaitez modifier une chaîne sans créer un nouvel objet. Par exemple, l'utilisation de la classe StringBuilder peut améliorer les performances lors de la concaténation de plusieurs chaînes dans une boucle.

https://docs.microsoft.com/en-us/dotnet/standard/base-types/stringbuilder

largement utilisé dans le code intégré OneStream, les exemples sont donc abondants. L'exemple ci-dessous provient de la règle standard PLP_PeoplePlanningData du connecteur (fournie avec la solution People Planning trouvée sur XF Marketplace):

  1. Un objet StringBuilder nommé "sql" est instancié
  2. Des chaînes sont ajoutées à un objet sql [19659008] Des sauts de ligne peuvent également être ajoutés, ce qui peut s'avérer utile lors de l'affichage de requêtes paramétrées à l'exécution.
  3. Enfin, la méthode ToString est utilisée pour extraire la chaîne résultante.

String.Split

Autre manipulation couramment utilisée avec des chaînes. L'analyse sera effectuée avec le délimiteur:

  1. wfTime indique l'heure du flux de travail, telle que «2019M4»
  2. La méthode Split (avec le séparateur M) renvoie le tableau {2019, 4}. Ainsi l'année est la position 0 du tableau et le numéro de la période est la position 1.

String.Join

L'opération inverse, qui consiste à joindre des chaînes et à les délimiter avec le caractère spécifié, s'avère pratique. toujours aussi souvent:

  1. Join concatène toutes les valeurs de la ligne de données actuelle (le code passe en boucle dans une table de données) en une chaîne délimitée par des virgules. La méthode ItemArray appliquée à la ligne en cours génère commodément toutes les valeurs de ligne sous forme de tableau de chaînes.

IEnumerable.Last

La méthode ci-dessus nécessite un tableau de chaînes en entrée, ce qui signifie que le développeur doit organiser les chaînes à délimiter dans un tableau. en premier lieu, ce qui signifie dans la plupart des cas une boucle dans d’autres collections.

Par exemple, une tâche courante consisterait à concaténer les noms de membres en fonction d’un filtre. La méthode GetMembersUsingFilter donne une collection d'objets MemberInfo, et non de noms de membres, c'est-à-dire de chaînes. Le nom du membre est plutôt une propriété de MemberInfo. Comme il est de toute façon nécessaire de parcourir cette collection (pour récupérer des chaînes de noms), il est donc logique de rassembler la liste résultante directement dans la boucle, en contournant la construction du tableau, comme indiqué ci-dessous. Le défi consiste ici à échapper au début du mot "vide" ou à la fin de la chaîne résultante en raison de l'ajout du délimiteur – vous devez supprimer le séparateur au début ou à la fin du résultat:

  1. Le nouvel objet StringBuilder est instancié pour capturer la chaîne délimitée. Comme cette chaîne résultante sera finalement utilisée dans la clause WHERE d'une instruction SQL, chaque nom de membre doit être entouré de guillemets simples. Donc, le tout premier caractère est une citation simple
  2. En boucle dans la collection d'éléments MemberInfo récupérés à la ligne 832
  3. L'astuce pour supprimer le délimiteur à la fin de la ligne: si l'élément actuel est le dernier élément de la collection – alors n’ajoutez pas le «délimiteur complet», mais plutôt une seule route fermante.




Source link