IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Remplacer une chaine par une autre à un endroit bien précis d'une chaine "maître" [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien d'étude
    Inscrit en
    Septembre 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien d'étude

    Informations forums :
    Inscription : Septembre 2007
    Messages : 56
    Points : 49
    Points
    49
    Par défaut Remplacer une chaine par une autre à un endroit bien précis d'une chaine "maître"
    Bonjour à tous et à toutes,

    Je débute avec Powershell et j'ai un souci avec la création d'une fonction.

    Ma "mission" consiste à chercher une sous-chaine, à une position bien précise dans une chaine "maître" et à la remplacer par une autre sous-chaine même si la sous-chaine cherchée existe ailleurs dans la chaine "maître".

    Par exemple, je dois remplacer "0LKS" dans "0LKS_AND_0LKS251-", en début de chaîne par "????" alors que "0LKS" est présent après le "AND"

    J'ai rédigé ce bout de code qui marche (je vous fais grâce des boucles FOR et IF dans lesquelles ce code est imbriqué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $long_remplace = "????".length
    $long_chaine = $modif.length
    $chaine1 = $modif.substring(0,$j)
    $chaine2 = $modif.substring($j+$long_remplace,$long_chaine-($j+$long_remplace))
    $modif = $chaine1+"????"+$chaine2
    Comme je suis amené à effectuer le même genre de manipulations à plusieurs endroit de mon programme, je voudrais transformer ça en fonction et là, ça se complique.

    J'ai crée une fonction "remplace-chaine" que voici mais qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function remplace-chaine
    {
        param ([string]$chaine, [string]$remplace, [int]$position)
        
        $long_remplace = $remplace.length
        $long_chaine = $chaine.length
        $chaine1 = $chaine.substring(0,$position)
        $chaine2 = $chaine.substring($position+$long_remplace,$long_chaine-($position+$long_remplace))
        $sortie = $chaine1+$remplace+$chaine2
        
        return $sortie
    }
    Je voudrais appeler cette fonction, tout simplement, en faisant "$sortie = remplace-chaine($modif,"????",$j)"

    Je plaide coupable, c'est ma première fonction avec plusieurs arguments en entrée, c'est pourquoi je fais appel à vous.

    D'avance merci pour votre aide.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Aenean Voir le message
    Je voudrais appeler cette fonction, tout simplement, en faisant "$sortie = remplace-chaine($modif,"????",$j)"
    En Powershell les fonctions n'utilisent pas les parenthèses (), sinon tu passes un tableau d'objets, faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sortie = remplace-chaine $modif "????" $j
    Une solution basée sur une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $s='0LKS_AND_0LKS251-'
    [regex]$Reg='0LKS?'
    $reg.Replace($s,'????',1)
    #????_AND_0LKS251-

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien d'étude
    Inscrit en
    Septembre 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien d'étude

    Informations forums :
    Inscription : Septembre 2007
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    Merci.

    J'ai modifié mon appel de la fonction et tout est rentré dans l'ordre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplacer les occurences d'un caractere dans une chaine par un autre
    Par lity7 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 14/03/2008, 12h02
  2. Réponses: 9
    Dernier message: 31/07/2007, 01h13
  3. Réponses: 3
    Dernier message: 21/07/2007, 01h48
  4. Parser une page pour remplaçer des mots par d'autres
    Par HALOMOTO dans le forum Langage
    Réponses: 13
    Dernier message: 13/07/2006, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo