Question mise en forme d'une chaine de caractere

Plus d'informations
il y a 9 ans 10 mois #17545 par darphboubou
Bonjour,

Je cherche une solution pour formater une chaine de caractere type numéro de téléphone

Exemple:

toto: 0123456789

doit etre réécrit de la manière suivante

toto: 01 23 45 67 89

J'ai entendu parlé d'expression régulière mais je dois dire que je ne vois pas bien comment l'appliquer.

Merci d'avance pour votre aide

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 10 mois #17546 par Laurent Dardenne
Salut,
l'énoncé est simple, la solution déjà moins.
Une solution pour l'exemple donné ( PS v3):
[code:1]
$s='toto: 0123456789'
[system.Collections.arraylist]$t=([regex]'(.*:«»)\s+(\d{2})+').Matches($s).Groups.Captures.Value
$t.Removeat(0)
$ofs=' '
$s2=\"$t\"
$s2
#toto: 01 23 45 67 89
[/code:1]
La méthode Matches récupère tous les groupes (\d{2})
On peut aussi utiliser l'opérateur -Split en effectuant deux passes.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 10 mois #17547 par Laurent Dardenne
Une autre solution plus concise :
[code:1]
$s='toto: 0123456789'
#Visualise les modifications
#[Regex]::Replace($s, '(\d{2})', { param($chaine) \"$chaine-\"})

#Modifie uniquement les groupes de deux chiffre suivi d'un chiffre.
[Regex]::Replace($s, '(\d{2})(?=\d)', { param($chaine) \"$chaine \"})
#toto: 01 23 45 67 89
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.062 secondes
Propulsé par Kunena