2016-06-14 276 views
-2

我試圖從文件中讀取並將所有美元值替換爲歐元,例如,如果文件中的某處存在$ 30.25,則應將其轉換爲26.84E。我設法使其工作,但我不知道如何使它工作,例如,如果文本包含像$ 30.25的東西。 (最後注意點)。我使用字符串的替換方法,但如果使用replace(「。」,「」),它顯然會刪除所有的點,所以它不起作用。你能以其他方式幫助我嗎?Java:文件讀取/寫入

預先感謝您。

+2

您是否嘗試過 「由數字環繞的任何點」?看看關於正則表達式的教程。 – Gendarme

+0

該文件是您作爲程序的結果創建並隨後從中讀入的內容嗎?如果是這樣,我認爲最好是確定是什麼導致了額外的句號,並糾正這個錯誤,而不是稍後檢查 – Peter

+0

,那麼你想要https://docs.oracle.com/javase/7/docs/ API /爪哇/郎/ 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