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
Post a Comment