2016-10-18 7 views
-3

私の問題は、文字列内の最後の文字のみを別の文字に置き換えることです。 String.replace(char1、char2)を使用すると、文字列内のすべての文字が置換されます。例えばJavaの文字列置換メソッドの問題

、私は

String str = "Addressline1,Addressline2,City,State,Country,";のようなアドレス文字列を持っています。

文字列の最後の '、'の出現を '。'で置き換える必要があります。

Addressline1.Addressline2.City.State.Country:文字を置き換えるために

私のコードは、文字列は次のようになり、交換した後

str = str.replace(str.charAt(str.lastIndexOf(",")),'.'); 

です。

Java SDKには問題がありますか。はいの場合、それを解決する方法は?ドキュメントによると

public String replace(char oldChar, char newChar) 

+1

いいえ、 '#replace'は文字引数を取り、それを2番目の文字列に置き換えます。あなたは効果的に「文字がある場所で文字を見つけてください」と言った後、それらの文字をすべて '.'で置き換えます。 – Rogue

+0

これを試してくださいである。 –

+0

あなたが望むものにいくらか混乱があるようです。 (1)文字列の最後の文字を '.'で置き換えます。 (2)文字列の最後の文字を 'に置き換えます。'それがコンマである場合にのみ;または(3)コンマの後に文字があっても、文字列の最後の_comma_を '.'で置き換えますか? – ajb

答えて

-1

を意味する正規表現

str = str.replaceAll (",$", "."); 

$を使用String.replaceAllを使用する必要がありますreplaceは:

oldCharのすべての出現箇所をこの文字列に置き換えた新しい文字列をnewCharに返します。

だからあなたのコード:

str.charAt(str.lastIndexOf(",")) 

は明らかに文字,を返します。 replaceは、oldChar,のすべてのインスタンスをnewChar.に置き換えます。これはあなたが見ていた動作を説明しています。私を打つ@ScaryWombat

ソリューションは、あなたの最良の選択肢である:

str = str.replaceAll(",$", "."); 

正規表現の用語で、$は、文字列の終わりを意味し、以来。

希望すると便利です。

3

は、Java replace functionはのメソッド宣言を持っている文字列の最後

+0

私はこれが正しいとは思わない。 OPが何をしようとしているのか見てみると、文字列の最後のカンマを置き換えようとしていると思います。あなたのコードはそれをしません。一方、私はこのコメントを入力している間に彼はあなたの答えを承認しました。だから、おそらく本当に彼が望むものです。 – ajb

+0

@ajb '文字列の末尾にある '、'の出現を '。'で置き換える必要があります。 –

+0

OK、OPのソートが自分自身と矛盾しているのが分かります。 – ajb