我在編寫用於翻譯信號的java代碼。如果給定的字符串(輸入):解析和替換Java中的雙精度字符串
C*12.387a0d14assc7*18.65d142a
其翻譯(OUTPUT)應爲:
C*12387:1000a0d14assc7*1865:100d142a
算法:
無論在字符串中星號(*)如下包含數字十進制(在這個字符串中有兩個,第一個是'* 12.387',第二個是* 18.65'),這個數字要被變成分數,如上面的例子12.387被轉換成12387:1000和18.65被轉換成1865: 100
如果十進制數是孤立的,我可以把它轉換成分數用下面的代碼:
double d = 12.387;
String str = Double.toString(d);
String[] fraction = str.split("\\.");
int denominator = (int)Math.pow(10, fraction[1].length());
int numerator = Integer.parseInt(fraction[0] + "" + fraction[1]);
System.out.println(numerator + ":" + denominator);
但我不如何的十進制數的字符串,從它包含字符串分隔。作爲Java和編程新手,我需要幫助。感謝預期。
請添加需要提醒的是它需要StringUtils的外部庫 – nhahtdh
見http://stackoverflow.com/a/4903603/1737819爲重複的字符串。沒有外部庫:) – Willmore
替代的外部庫 – beny23