regex - Parsing and replacing doubles in Java String -


i writing java code translating signals. if given string (input) is:

c*12.387a0d14assc7*18.65d142a 

its translation (output) should be:

c*12387:1000a0d14assc7*1865:100d142a  

algorithm:

wherever in string star(*) follows number containing decimal (in string there two, first '*12.387' , second *18.65'), number changed fraction in above example 12.387 converted 12387:1000 , 18.65 converted 1865:100

if decimal number isolated can convert fraction following code:

    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); 

but not how separate substring of decimal number string contains. being new java , programming need help. in anticipation.

using regex , capturing groups way implement parsing:

string s = "c*12.387a0d14assc7*18.65d142a"; stringbuffer result = new stringbuffer(); matcher m = pattern.compile("\\*(\\d+)\\.(\\d+)").matcher(s); while (m.find()) {     string num = m.group(1);     string denom = m.group(2);     string divisor = "1" + new string(new char[denom.length()]).replace("\0", "0");     string replacement = "*" + num + denom + ":" + divisor;     m.appendreplacement(result, replacement); } m.appendtail(result); system.out.println(result.tostring()); 

Comments