2010-10-05 11 views
10

In Java, voglio sostituire tutti i caratteri * con \*.Come sostituire tutti gli asterischi?

Esempio: Testo: select * from blah

Risultato: select \\* from blah

public static void main(String[] args) { 
    String test = "select * from blah"; 
    test = test.replaceAll("*", "\\*"); 
    System.out.println(test); 
} 

Questo non funziona, né l'aggiunta di una barra rovesciata fuga.

+0

Perché questo etichettato regex? Non stai usando nessuna espressione regolare ... –

+1

'replaceAll' usa espressioni regolari quindi il primo argomento è l'espressione regolare' * '. '*' è un'espressione regolare * metacarattere * e ha un significato speciale. Dovresti leggere un'esercitazione con espressioni regolari, ad esempio: http://www.regular-expressions.info/tutorial.html. –

+1

@Ed Swangren Si trova, _replaceAll_ prende regex string come primo parametro –

risposta

13

ho capito

String test = "select * from blah *asdf"; 
    test = test.replaceAll("\\*", "\\\\*"); 
    System.out.println(test); 
+0

test = test.replaceAll (@ "\ *", @ "\\ *"); Detesto \\ personalmente e preferisco usare stringhe letterali. – WernerCD

+0

@WernerCD: non l'ho mai visto. Che sintassi è? – Thilo

+0

@WernerCD: sembra C# non Java per me. –

3

Per quelli di voi tenere il punteggio in casa, e dal momento che la comprensione della risposta può essere utile a qualcun altro ...

String test = "select * from blah *asdf"; 
test = test.replaceAll("\\*", "\\\\*"); 
System.out.println(test); 

opere perché si deve fuggire il personaggio speciale * per rendere felice l'espressione regolare. Tuttavia, \ è un carattere speciale in una stringa Java, quindi quando si crea questa espressione regolare in Java, è necessario sfuggire allo, quindi \\*.

Questo porta spesso a ciò che equivale a doppio escape quando si uniscono espressioni regolari in stringhe Java.

11

non hai bisogno di alcuna funzionalità regex per questo, quindi è necessario utilizzare la versione non-regex String.replace(CharSequence, CharSequence):

String test = "select * from blah *asdf"; 
test = test.replace("*", "\\*"); 
System.out.println(test); 
Problemi correlati