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.