2013-05-21 15 views
14

Sto avendo una stringa come questaSostituire ultima occorrenza di un carattere in una stringa

"Position, fix, dial" 

voglio sostituire l'ultima virgolette (") con uscita doppia citazione (\")

Il risultato della stringa deve essere

"Position, fix, dial\" 

Come posso fare questo. Sono consapevole di sostituire la prima occorrenza della stringa. ma non so come sostituire l'ultima occorrenza di una stringa

risposta

34
String str = "\"Position, fix, dial\""; 
int ind = str.lastIndexOf("\""); 
if(ind>=0) 
    str = new StringBuilder(str).replace(ind, ind+1,"\\\"").toString(); 
System.out.println(str); 
+0

solo chiedendo. Perché non piace questo? 'String str =" \ "Posizione, correzione, comporre \" "; str.replaceAll ("[\"] \\ Z "," \ ""); System.out.println (str); ' – Dudeist

+0

sì, è possibile utilizzare qualcosa come ** str = str.replaceAll (" [\ "] \\ Z", "\\\\\" ") **. Ma sostituirà l'ultimo quot alla fine dell'input. non funzionerà per <** "Posizione, correzione, componi" ancora **>. – yavuzkavus

+2

@Dudeista perché è molto meno leggibile. – Patrick

42

questo dovrebbe funzionare:

String replaceLast(String string, String substring, String replacement) 
{ 
    int index = string.lastIndexOf(substring); 
    if (index == -1) 
    return string; 
    return string.substring(0, index) + replacement 
      + string.substring(index+substring.length()); 
} 

questo:

System.out.println(replaceLast("\"Position, fix, dial\"", "\"", "\\\"")); 

Stampe:

"Position, fix, dial\" 

Test.

+0

Questo è migliore della risposta accettata perché è di uso generale. – demongolem

1

Se si desidera rimuovere solo il carattere las (nel caso ce ne sia uno), questo è un metodo a una riga. Lo uso per le directory.

localDir = (dir.endsWith("/")) ? dir.substring(0,dir.lastIndexOf("/")) : dir; 
0
String docId = "918e07,454f_id,did"; 
StringBuffer buffer = new StringBuffer(docId); 
docId = buffer.reverse().toString().replaceFirst(",",";"); 
docId = new StringBuffer(docId).reverse().toString(); 
+0

Questo funziona solo per cose a carattere singolo. –

Problemi correlati