Question
[Resolu] Traitement de caractères
- Seals
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 39
- Remerciements reçus 0
Mais
Car le little rookie que je suis... jamais je ne pourrais reproduire une expression comme celle la si la longueure, mon fichier ou autre change.
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Désormais dés que je traite du texte je me dirige en premier lieu sur une expression régulière, c'est le meilleur moyen de les pratiquer.
Seals écrit:
C'est pour cette raison que je suis parti sur une expression régulière, dans tout les cas si les specifications changent ton code aussi.si la longueure, mon fichier ou autre change.
Une autre approche basée sur *:*:*=*, où * représente une suite de caractères sans distinction. Plus proche du \"For /F ... \"
On peut effectivement faire plus simple et faciliter la maintenance ainsi (reste à tester les cas de possible modifications) :
[code:1]
$S=\"fichier1.txt:2:1=toto\"
#renvoi un tableau
$T1=$S.Split(\":\"«»)
$T2=$S.Split(\"=\"«»)
$T1[0];$T2[1]
[/code:1]
[code:1]
En v2 :
(($S -Split \":\"«») -Split(\"=\"«»))[0,-1]
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Seals
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 39
- Remerciements reçus 0
Car j'ai une petite question sur le code de la V2
[code:1]$S=\"fichier1.txt:2:1=toto\"[/code:1]
Quand tu splites la 1iere fois :
[code:1]($S -Split \":\"«»)[/code:1]
tu obtiens:
fichier1.txt
:2:1=toto
et quand tu splites la 2ieme fois :
[code:1]-Split(\"=\"«»)[/code:1]
tu obtiens
:2:1=
toto
Alors pkoi [0;-1] Puisque le champ 0 correspond à la première fois donc fichier1.txt et pas 3 (qui fonctionne aussi) dui est le dernier champs du 2ieme split donc toto ??
Et pourquoi quand je veux spliter la 1iere fois sur le *.*
plus rien ne fonctionne ?
[code:1](($S -Split \".\"«») -Split(\"=\"«»))[0,-1][/code:1]
puisque je devrais obtenir :
fichier1
.txt:2:1=toto
puis
.txt:2:1=
toto
Non ?
Merci.<br><br>Message édité par: Seals, à: 28/04/10 13:18
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
ça se fait naturellement avec le temps.mais je pense qu'il sera plus simple (mais pas plus rapide) que je passe du niveau Rookie à Advanced !
Seals écrit:
Les deux fonctionnent, j'utilise le -1 pour indiquer que j'utilise le dernier. C'est une régle/indication implicite, une de plus.Alors pkoi [0,-1]
Indiquer le trois, qui est le dernier, est moins parlant à mon avis, pour preuve tu ne te poses pas la question sur la présence du zéro (le premier)...
Je constate que j'ai des habitudes de codage qui ne sont pas très explicite :/
Seals écrit:
Si cela fonctionne, le piège est que l'opérateur -Split est mappé sur la classe [RegEx]. Quel farceur ce PowerShell !Et pourquoi quand je veux spliter la 1iere fois sur le *.* plus rien ne fonctionne ?
Donc le point . doit être échappé avec l'anti-slash \
[code:1]
#\. pour exclure le membre .ctor
[RegEx].GetMembers()|select name -unique|? {$_.Name -notmatch \"^(set|get|\.).*\"}
[/code:1]
Donc :
[code:1]
(($S -Split \"\.\"«») -Split(\"=\"«»))[0,-1]
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Seals
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 39
- Remerciements reçus 0
Non, en faite, j'avais deja lu sur un topic que dans un tableau la première valeur avait une position de 0. Donc elle ne m'avait pas choquée.pour preuve tu ne te poses pas la question sur la présence du zéro (le premier)...
J'avais bien essayé avec le backtick, mais ca ne marchait pas non plus.Donc le point . doit être échappé avec l'anti-slash
Sinon, klk liens pour les Rookies sur les expressions régulières qui permette d'avancer un peu plus...
www.commentcamarche.net/contents/php/phpreg.php3
www.regular-expressions.info
D'ailleurs si il y a des utilisateurs des logiciels présents ci-dessus pour un retour d'experience je suis preneur.
Merci pour tout... et à bientôt
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Il n'est pas spécialement dédié aux débutants, mais le principe de base est bien expliqué, et c'est celui-ci qu'il faut comprendre pour progresser.
Tu aussi consulter ce post .
Bonne lecture
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Resolu] Traitement de caractères