2016-06-14 19 views
-2

私はファイルから読み込み、すべてのドル値をユーロに置き換えようとしています。たとえば、ファイルのどこかに$ 30.25があれば、それを26.84Eに変換する必要があります。私は何とかそれを働かせるように管理しましたが、たとえば、テキストに$ 30.25のようなものが含まれている場合、それを動作させる方法がわかりません。 (最後に点に気づく)。私はstringのreplaceメソッドを使用していますが、replace( "。"、 "")を使用すると、明らかにそこにあるすべてのドットが削除されるため、機能しません。これがうまくいくように他の方法で私を助けてくれますか?Java:ファイルの読み込み/書き込み

ありがとうございます。

+2

あなたは "数字に囲まれた任意のドット" を試したことがありますか?正規表現についてのチュートリアルをご覧ください。 – Gendarme

+0

あなたのプログラムの結果としてあなたが作成し、後でから読み込むファイルですか?そうであれば、追加の完全停止を引き起こしているものを特定し、それを訂正するのが最善であると思います。 – Peter

+0

ですので、https://docs.oracle.com/javase/7/docs/ api/java/lang/String.html#replaceFirst(java.lang.String、%20java.lang.String) –

答えて

0

あなたは以下の例は、完全な停止に分割するために、正ルックの背後に使用していますString.split()

を使用して行うことができ、あなたが最初に保存しておきたいの発生を、分離することができればあなたはまだ置き換える方法を使用することができます。正ルック背後Regex101からの定義:

Regex101 Positive lookbehind description


private String replaceAllButFirstOccurrence(String text, String sequence){ 
    if(text.contains(sequence) && (text.indexOf(sequence) != text.lastIndexOf(sequence))){ 
     //There are at least 2 occurrences of the sequence 
     String[] substrings = text.split("(?<=\\.)", 2); //Split in 2 
     /* 
      Input is now segmented in 2: 
       [0] - The first sub string containing the first occurrence 
       [1] - The second sub string containing the rest of the input that can be modified 
     */ 
     return substrings[0] + substrings[1].replaceAll("\\.", ""); 
    } 
    return text; 
} 

サンプル:

$100 -> $100 
$200.00 -> $200.00 
$250.00. -> $250.00 
$300.00.. -> $300.00 
関連する問題