2013-05-21 26 views

答えて

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

。なぜこれが好きではない? 'String str =" \ "位置、修正、ダイヤル\" "; str.replaceAll( "[\"] \\ Z "、" \ ""); System.out.println(str); ' – Dudeist

+0

はい、** str = str.replaceAll(" [\ "] \\ Z"、 "\\\\\" ")**のようなものを使用できます。しかし、それは入力の終わりに最後の引用符を置き換えます。それは<** "Position、fix、dial"> **>にはうまくいかない。 – yavuzkavus

+2

@Dudeistこれはずっと読みにくいからです。 – Patrick

42

これは動作するはずの文字列の最後に出現交換する方法がわからない:

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()); 
} 

をこの:

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

プリント:

"Position, fix, dial\" 

Test

+0

一般的な目的のため、これは受け入れられた答えより優れています。 – demongolem

1

las文字がある場合にのみ削除する場合は、これは1行の方法です。私はディレクトリのためにこれを使用します。ただ尋ねる

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

これは、単一文字の場合にのみ機能します。 –

関連する問題