我在编写用于翻译信号的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