有这样一个字符串 str="9月:0@@@9月:9.10@@@10月:10.20@@@9月:9.20@@@10月:10.09@@@11月:11.35"
用"@@@"分隔
现在想把对应的每个月份的数值加起来。
返回一个新的字符串 newStr = "9月:18.30@@@10月:20.29@@@11月:11.35"
琢磨好一会了也没想出个解决办法来,哪位高手能帮忙搞定,万分感谢!
------解决方案--------------------------------------------------------
- Java code
import java.text.DecimalFormat;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class Test { public static void main(String[] args) { String str = "9月:0@@@9月:9.10@@@10月:10.20@@@9月:9.20@@@10月:10.09@@@11月:11.35"; String p1 = "@@@"; String p2 = ":"; String[] strings = str.split(p1); Map<String, String> map = new HashMap<String, String>(); String[] tmpStrings ; for (String string : strings) { tmpStrings = string.split(p2); if (map.containsKey(tmpStrings[0])) { //月份后面的数字相加 float f = Float.valueOf(map.get(tmpStrings[0])) + Float.valueOf(tmpStrings[1]); map.put(tmpStrings[0], new DecimalFormat("#.00").format(f)); } else { map.put(tmpStrings[0], tmpStrings[1]); } } StringBuilder sBuilder = new StringBuilder(); Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = (Map.Entry<String, String>) iterator.next(); sBuilder.append(entry.getKey() + p2 + entry.getValue() + p1); } System.out.println(sBuilder.toString()); }}