当前位置: 代码迷 >> Java Web开发 >> 让人头疼的字符串有关问题
  详细解决方案

让人头疼的字符串有关问题

热度:1255   发布时间:2013-02-25 21:19:57.0
让人头疼的字符串问题求助
有这样一个字符串 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());    }}
  相关解决方案