簡體   English   中英

使用正則表達式替換字符串中的特殊字符和可選字符

[英]Replace special and optional characters in a string using regex

我正在學習正則表達式並嘗試完成一項小任務。

我將輸入金額作為字符串並將其轉換為美元格式。

輸入字符串如下所示

123456.78

輸出字符串如下所示

$123,456.78

使用正則表達式,我試圖避免使用下面的正則表達式在輸入量中可能出現的前導零和逗號。 例如,如果輸入就像

000,000123456.78
String amount = amount.replaceFirst("^[0,]+(?!$)", "");

我正在制作輸出美元格式

NumberFormat.getCurrencyInstance(new Locale("en", "US")).format(Float.parseFloat(amount));

我無法替換除前導零之外可能存在的任何其他字符。 例如,如果輸入中已經存在“$”,我將面臨轉換錯誤。 我不知道如何處理這個。

給定以下字符串。

String str = "000,000,000ab$k0b#wef$12322920292029202920456.78";
  • 首先,去掉不需要的前導字符,包括任何 $。
  • 然后使用重復的正則表達式,生成正確的逗號。 這也可以通過使用數字的語言環境符號修改“,”來完成。
  • 然后在結果前面加上$
str = str.replaceAll("^([0$\\D]+)","");
System.out.println(str);
String result = "";
while (!str.equals(result)) {
     result = str;
     str = str.replaceAll("(\\d)(\\d\\d\\d)(?!\\d)", "$1,$2");
}
System.out.println("$" + result);

印刷

12322920292029202920456.78
$12,322,920,292,029,202,920,456.78

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM