2012-11-20 37 views
13

Sto cercando di sostituire tutte le istanze di un carattere in una stringa di testo con un altro carattere, ma non ci riesco.Sostituzione caratteri in stringa

Supponiamo che il testo è

cat rat mat fat 

voglio lo script per sostituire tutti i t's to p's

cap rap map fap 

Quello che ho è il seguente ma sembra fare ben poco per me.

SET /P MY_TEXT=ENTER TEXT: 

SET T2P=P 

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

MSG * %NEW_TEXT% 
+0

Solo i 2 centesimi per il ciclo for: - In cerca di istruzioni su usando! invece di% per le variabili. – Claudio

risposta

6

Hai il segno = nel posto sbagliato. Prova:

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

Si può anche fare l'espansione viceversa, cioè

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

Questo ora ha una finestra di messaggio che dice T = P che non è cosa stavo cercando? –

+0

Vedo cosa sbaglio la tua risposta dice TEXT not MYT TEX ora funziona :) –

+0

Appena modificato per correggere il nome della variabile .. D'oh .. – Grhm

-1

si potrebbe usare 'sed' come questo:

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

Dice che l'operazione batch non viene riconosciuta? –

+0

non riconosciuto, cosa intendi? – hugo

+4

'sed' non è riconosciuto su Windows a meno che tu non faccia il possibile per installarlo. – Grhm

8

Prova questo

setlocal 
set string=cat rat mat fat 
set string=%string:t=p% 
Problemi correlati