Question [Resolu] Traitement de caractères

Plus d'informations
il y a 15 ans 10 mois #6624 par Seals
Réponse de Seals sur le sujet Re:Traitement de caractères
Merci beaucoup pour la réponse. Effectivement ca fonctionne tres bien.
Mais B) en faite il n'y aurait pas un moyen plus simple pour y arriver ? avec un .remove(x,y) par exemple.

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.

Plus d'informations
il y a 15 ans 10 mois #6626 par Laurent Dardenne
C'est vrai que ma proposition est quelque peu 'avancée'.
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:

si la longueure, mon fichier ou autre change.

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.

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.

Plus d'informations
il y a 15 ans 10 mois #6632 par Seals
Réponse de Seals sur le sujet Re:Traitement de caractères
Merci... mais je pense qu'il sera plus simple (mais pas plus rapide) que je passe du niveau Rookie à Advanced !;)

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.

Plus d'informations
il y a 15 ans 10 mois #6634 par Laurent Dardenne
Seals écrit:

mais je pense qu'il sera plus simple (mais pas plus rapide) que je passe du niveau Rookie à Advanced !;)

ça se fait naturellement avec le temps.
Seals écrit:

Alors pkoi [0,-1]

Les deux fonctionnent, j'utilise le -1 pour indiquer que j'utilise le dernier. C'est une régle/indication implicite, une de plus.
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:

Et pourquoi quand je veux spliter la 1iere fois sur le *.* plus rien ne fonctionne ?

Si cela fonctionne, le piège est que l'opérateur -Split est mappé sur la classe [RegEx]. Quel farceur ce PowerShell ! :P
Donc le point . doit être échappé avec l'anti-slash \
[code:1]
#\. pour exclure le membre .ctor
[RegEx].GetMembers()|select name -unique|? {$_.Name -notmatch \&quot;^(set|get|\.).*\&quot;}
[/code:1]
Donc :
[code:1]
(($S -Split \&quot;\.\&quot;«») -Split(\&quot;=\&quot;«»))[0,-1]
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 10 mois #6636 par Seals
Réponse de Seals sur le sujet Re:Traitement de caractères

pour preuve tu ne te poses pas la question sur la présence du zéro (le premier)...

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.

Donc le point . doit être échappé avec l'anti-slash

J'avais bien essayé avec le backtick, mais ca ne marchait pas non plus.

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 :P :P

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

Plus d'informations
il y a 15 ans 10 mois #6640 par Laurent Dardenne
Je vous conseille celui-ci Les expressions régulières et .NET .
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.

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