2014-08-29 13 views
7

Ho una stringa di grandi dimensioni in cui ho & caratteri usati disponibili in seguenti modelli -Stringa Java Sostituire '&' con & ma non & a & amp;

A&B 
A & B 
A& B 
A &B 
A&B 
A & B 
A& B 
A &B 

voglio sostituire tutte le occorrenze di & carattere & Mentre sostituzione di questo, ho anche bisogno di fare in modo che Non converto per errore uno & a &. Come faccio a farlo in un modo esperto di prestazioni? Uso espressioni regolari? Se sì, per favore puoi aiutarmi a riprendere la giusta espressione regolare per fare quanto sopra?

Ho provato a seguito finora con gioia:

data = data.replace(" & ", "&"); // doesn't replace all & 
data = data.replace("&", "&"); // replaces all &, so & becomes & 
+3

È possibile modificare tutti i '&' '' '' 'e quindi modificare tutti' '' '' & '. –

+0

Hai altri caratteri di escape come ' ' per esempio? – Pshemo

risposta

27

È possibile utilizzare un'espressione regolare con un lookahead negativo.

La stringa regex è &(?!amp;).

Utilizzando replaceAll, si otterrebbe:

A&B 
A & B 
A& B 
A &B 
A&B 
A & B 
A& B 
A &B 

Quindi il codice per una singola stringa str sarebbe:

str.replaceAll("&(?!amp;)", "&"); 
+0

Grazie mille. Esso funziona magicamente! – sribasu

+0

Certo, nessun problema. – khampson

2

Si può provare questo, dovrebbe funzionare:

data = data.replaceAll("&","&").replaceAll("&","&"); 

In questo modo sostituisci per la prima volta tutti & con & quindi tutto ciò che avrai è &, e poi li sostituirai tutti con &.

+0

Questa è un'opzione molto più sicura, grazie – Bikram

+0

bella idea, grazie –

Problemi correlati