$string = "my\\\name\\is\John\\\\Doe" Desired output: my\name\is\John\DoeThank you for your help in advance!
3 Réponses :
Parlons de ce que nous devons faire.
Prenez la chaîne et créez un tableau en utilisant -split '\\'
. Pourquoi \\
parce que -split
autorise l' expression régulière et \
est une chaîne d'échappement pour l'expression régulière.
Ensuite, nous devons supprimer tous les objets de tableau vides en utilisant Where-Object
assurant que la longueur de la chaîne est supérieure à 0.
Enfin, nous utilisons cela avec la méthode de chaîne join(Joining Char, Array)
La méthode join()
vous permet de joindre un tableau en créant une chaîne en utilisant un char comme colle.
my\name\is\John\Doe
retour
$string = "my\\\name\\is\John\\\\Doe" [string]::join('\',($string -split "\\" | Where-Object{$_.length -gt 0}))
Même principe, méthodes différentes
$string my\name\is\John\Doe
Production
$string = "my\\\name\\is\John\\\\Doe" while($string -match '\\\\'){$string = [regex]::Replace($string,'\\\\','\')}
Une autre façon d'utiliser regex
my\name\is\John\Doe
Production
$string = "my\\\name\\is\John\\\\Doe" $string.Split('\').where{$_} -join '\'
Utiliser -replace
semble simplement plus simple.
# replace all single or consecutive \ with a single \ $string -replace '\\+','\' # replace each \ that had a preceding \ $string -replace '(?<=\\)\\'
Je pense que c'est la meilleure réponse. J'aimerais pouvoir offrir ma réponse à cela. Bonnes compétences en regex @AdminOfThings