Question renommer un fichier en remplaçant le Xème caractère

Plus d'informations
il y a 9 mois 1 semaine - il y a 9 mois 1 semaine #31751 par Le Poulpe
Bonjour,

Je ne trouve pas comment remplacer un caractère dans le nom d'un fichier en me basant sur sa position, par exemple je veut remplacer le 3ème caractère quelqu''il soit par *

Merci d'avance.

Le Poulpe77
Dernière édition: il y a 9 mois 1 semaine par Le Poulpe.

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

Plus d'informations
il y a 9 mois 1 semaine - il y a 9 mois 1 semaine #31753 par Philippe
salut le poulpe

je pense que le plus simple pour une simple chaine de caractère est de l'utiliser comme un tableau.

pour reprendre ton exemple :
# dans $mavariable la chaine de caractère
$mavariable = "le grand string"
# je remplace le premier espace par une étoile
$mavariable[2] = "*"
# pour rappel un tableau commence à zéro
$mavariable # affichage de la variable


PS : l'indexation d'un tableau ce fait de 0 à x. le premier élément d'un tableau est en position zéro !
 
Dernière édition: il y a 9 mois 1 semaine par Philippe.

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

Plus d'informations
il y a 9 mois 1 semaine #31754 par ericlm128
Voici ce que donne ton code Philippe
Impossible d’indexer un objet de type System.String.
Au caractère Ligne:4 : 1
+ $mavariable[2] = "*"
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation : (:) [], RuntimeException
    + FullyQualifiedErrorId : CannotIndex
 

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

Plus d'informations
il y a 9 mois 1 semaine #31755 par ericlm128
Je propose ceci
$mavariable = "le grand string"
$mavariable.Remove(2, 1).Insert(2, "*")
 

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

Plus d'informations
il y a 9 mois 1 semaine - il y a 9 mois 1 semaine #31756 par ericlm128
On pourrais ajouter un ScriptMethod, pour nous simplifier la vie si c'est récurent
Update-TypeData -TypeName "System.String" -MemberType ScriptMethod -MemberName "ReplaceAt" -Force -Value {
    param (
        [int]$idx,
        [string]$replacement
    )
        if ($this.Length -gt $idx)
        {
            $mavariable.Remove($idx, 1).Insert($idx, $replacement)
        }
        else
        {
            $mavariable
        }
}

$mavariable.ReplaceAt(2, "*")
$mavariable.ReplaceAt(3, "#")
$mavariable.ReplaceAt(7, "!")
Dernière édition: il y a 9 mois 1 semaine par ericlm128.

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

Plus d'informations
il y a 9 mois 1 semaine #31758 par Philippe
merci Eric d'avoir corrigé
je n'avais pas testé le code avant de l’écrire ici !
la lecture indexé fonctionne mais pas l’écriture ! :(

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

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