Remplacer plusieurs caractères dans une chaîne dans une ligne de code dans VB.NET
À l'aide de VB.NET je voudrais être en mesure de remplacer une suite de caractères dans une chaîne de caractères en une seule ligne de code.
I. e., quelque chose comme:
Dim charsToReplace as string = "acegi"
Dim stringToBeReplaced as string = "abcdefghijklmnop"
charsToReplace.ToArray().ForEach(Function (c) stringTobeReplaced = stringTobeReplaced.Replace(c, ""))
Toutefois, cela ne fonctionne pas.
Le code suivant fonctionne, mais je ne veux pas la chaîne à un niveau de classe de la variable:
Sub Main()
Dim toReplace As String = "acegikmoq"
Console.WriteLine(mainString)
Dim chars As List(Of Char) = toReplace.ToList()
chars.ForEach(AddressOf replaceVal)
Console.WriteLine(mainString)
Console.ReadLine()
End Sub
Dim mainString As String = "this is my string that has values in it that I am going to quickly replace all of..."
Sub replaceVal(ByVal c As Char)
mainString = mainString.Replace(c, "")
End Sub
Cela peut-il être fait?
source d'informationauteur hitch
Vous devez vous connecter pour publier un commentaire.
Si j'ai lu correctement, vous essayez de bande d'une liste de caractères d'une chaîne. C'est un bon ajustement pour un RegEx.
(vous aurez besoin de Système d'importation.Texte.RegularExpressions)
La RegEx approche est la mieux adaptée, mais ce que je vraiment besoin de le dire, c'est:
S'il vous plaît, pour l'amour de l'entretien de développeurs, de ne pas s'être accroché sur l'obtention de ce, jusqu'à 1 ligne de code. Un seul appel de méthode est votre véritable objectif, si vous vous retrouvez juste empiler un tas d'appels en 1 ligne pour dire que c'est une ligne, alors vous allez tirer une balle dans le pied.
Je ne crois pas Bittercode comme il l'a dit que LINQ serait mieux que les regex.
J'ai donc fait un petit test juste pour être sûr.
Trois exemples de la façon de le faire:
Les résultats:
Donc, la boucle for avec de la ficelle.remplacer outperformes toutes les autres méthodes.
À cause de cela, je voudrais faire une extension de la fonction de l'objet de type string.
Vous pouvez utiliser cette fonction agréable et lisible en une seule ligne:
Je recommande Jon Galloway, une expression régulière est la méthode la plus appropriée, et les futurs développeurs vous en remercie 🙂 - si ce n'est pas un problème difficile à résoudre avec Linq. Voici quelques (non testé) code C# pour le faire:
Je soupçonne que ce code ne sera probablement effectuer un peu mieux alors l'expression rationnelle équivalente, si la performance est un problème.
La classe String possède un remplacement de la méthode pour ce faire. Vous pouvez l'utiliser de cette façon:
Quelle est la meilleure façon de répéter l'instruction de la ligne si vous voulez vraiment utiliser ce code:
Par exemple: si vous avez tapé:
012ALP456HA90BET678
la sortie serait:ALPHABET
.