2012-11-20 4 views
13

J'essaie de remplacer toutes les occurrences d'un caractère dans une chaîne de texte par un autre caractère, mais je ne réussis pas.Remplacement de caractères dans la chaîne

Supposons que le texte est

cat rat mat fat 

Je veux que le script pour remplacer toutes les t's to p's

cap rap map fap 

Ce que j'est la suivante, mais il semble faire peu pour moi.

SET /P MY_TEXT=ENTER TEXT: 

SET T2P=P 

SET NEW_TEXT=%TEXT=:T!T2P!% 

MSG * %NEW_TEXT% 
+0

seulement 2 cents pour la boucle for: - Cherchez des instructions sur en utilisant ! au lieu de% pour les variables. – Claudio

Répondre

6

Vous avez le signe = au mauvais endroit. Essayez:

setlocal enabledelayedexpansion 
set /P MY_TEXT=ENTER TEXT: 
SET T2P=P 
set NEW_TEXT=%MY_TEXT:T=!T2P!% 
MSG * %NEW_TEXT% 

Vous pouvez également faire l'expansion dans l'autre sens, à savoir

set NEW_TEXT=!MY_TEXT:T=%T2P%! 
+0

Ceci a maintenant une boîte de message disant T = P qui n'est pas ce que j'étais après? –

+0

Je vois ce qui se passe mal votre réponse dit TEXt pas MY-TEXT fonctionne maintenant :) –

+0

Juste édité pour fixer le nom de variable .. D'oh .. – Grhm

-1

Vous pouvez utiliser sed comme ceci:

echo "cat rat mat fat" | sed 's/t/p/g' # outputs "cap rap map fap" 
+0

Dit que l'opération par lots n'est pas reconnue? –

+0

pas reconnu, que voulez-vous dire? – hugo

+4

'sed' n'est pas reconnu sur windows à moins que vous ne fassiez tout ce que vous pouvez pour l'installer. – Grhm

8

Essayez cette

setlocal 
set string=cat rat mat fat 
set string=%string:t=p% 
Questions connexes