字符串 怎么把相同的合并在一起啊??大神们求帮助,非常感谢。

字符串 string info= “桃子*3,李子*2,葡萄*3,李子*3,葡萄*2,桃子*4”怎么把相同的合并在一起啊

C#

 using System;
using System.Linq;
public class Test
{
    public static void Main()
    {
        // your code goes here
        string info="桃子*3,李子*2,葡萄*3,李子*3,葡萄*2,桃子*4";
        info = string.Join(",", info.Split(',').GroupBy(x => x.Split('*')[0]).Select(x => x.Key + "*" + x.Sum(y => int.Parse(y.Split('*')[1]))));
        Console.WriteLine(info);
    }
}

在线验证
http://ideone.com/9KjtW2

桃子*7,李子*5,葡萄*5

x3那个是出现的次数吗?其实你可以利用哈希Set的特性,Set < E > 是一个不包含重复元素的 collection,所以你分割遍历一下那个字符串,重复的就祛除了。希望这个对你有所帮助。

HashSet 判断两个对象相等的标准除了要求通过 equals() 方法比较返回 true 之外,还要求两个对象的 hashCode() 返回值相等

String s="桃子,桃子,桃子,李子,李子,葡萄,葡萄,葡萄,李子,李子,李子,葡萄,葡萄,葡萄,桃子,桃子,桃子,桃子";
String[] splist=s.split(",");
StringBuffer str=new StringBuffer();
StringBuffer strs=new StringBuffer();
StringBuffer strss=new StringBuffer();;
String diyi="桃子";
String dier="李子";
for (String ss : splist) {
if(diyi.equals(ss)){
str.append(ss);
}else if(dier.equals(ss)){
strs.append(ss);
}else{
strss.append(ss);
}
}
System.out.println(str.toString()+strs.toString()+strss.toString());
}

首先把这个字符串分割,然后循环,定义一个初始值,来循环判断,最后拼接在一起,希望对你有帮助

$str = '桃子*3,李子*2,葡萄*3,李子*3,葡萄*2,桃子*4';
$arr = explode(',', $str);
$new_arr = array();
$new_str = '';
foreach ($arr as $val) {
    $val = explode('*', $val);
    $new_arr[$val[0]] += $val[1];
}
foreach ($new_arr as $key=>$val) {
    $new_str .= $key.'*'.$val.',';
}
echo trim($new_str, ',');

图片说明

String info= "桃子*3,李子*2,葡萄*3,李子*3,葡萄*2,桃子*4";
String[] fruits = info.split(",");

    Map<String,Integer> map = new HashMap<String,Integer>();
    for(String fruit : fruits){
        String[] fruitNumber = fruit.split("\\*");;
        if(map.containsKey(fruitNumber[0])){// map中已有,累加
            map.put(fruitNumber[0], map.get(fruitNumber[0]) + Integer.valueOf(fruitNumber[1]));
        }else{// map中没有,第一次加入
            map.put(fruitNumber[0], Integer.valueOf(fruitNumber[1]));
        }
    }

    StringBuffer newInfo = new StringBuffer();
    Iterator iterator = map.entrySet().iterator();
    while(iterator.hasNext()){
        Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)iterator.next();
        newInfo.append(entry.getKey() + "*" + entry.getValue() + ",");
    }

    info = newInfo.toString();
    info = info.substring(0,info.length()-1);

    System.out.println(info);

C#版:

 Dictionary<string, int> dic = new Dictionary<string, int>();
            string info = "桃子 * 3,李子 * 2,葡萄 * 3,李子 * 3,葡萄 * 2,桃子 * 4";
            foreach (string item in info.Split(','))
            {
                string[] items = item.Split(new char[] { '*' }, StringSplitOptions.RemoveEmptyEntries);
                if (dic.ContainsKey(items[0]))
                {
                    dic[items[0]] += Convert.ToInt32(items[1]);
                }
                else
                {
                    dic[items[0]] = Convert.ToInt32(items[1]);
                }
            }

            foreach (var k in dic.Keys)
            {
                Console.WriteLine(k + "*" + dic[k]);
            } 

什么鬼 什么代码都来了 楼主问也说详细点啊。。。

/**

  • 思路:根据“,”符号将数据分割成“桃子*3”类似的格式
  • 然后将这个类似json格式的数据放进一个map中
  • 在添加进map之前做判断 若map中有这个key 则将之前key对应的value拿出 并与这次
  • 要添加进去的value值相加 / String str = "桃子*3,李子*2,葡萄*3,李子*3,葡萄*2,桃子*4"; // 拿到json格式的一个字符串数组 String[] strs = str.split(","); // 声明一个map用来储存结果 Map map = new HashMap(); for(int i=0;i<strs.length;i++){ // 对数组中的每一个元素进行拆分 (key value 分离 方便进行判断) String[] s=strs[i].split("\"); // 判断: 若 若map中有这个key 则将之前key对应的value拿出 并与这次要添加进去的value值相加 if(map.get(s[0]) == null){ map.put(s[0], Integer.parseInt(s[1])); }else{ map.put(s[0], Integer.parseInt(s[1])+map.get(s[0])); } } System.out.println(map); // ....... // map====>String // 完成 图片说明

···java
/**

  • 思路:根据“,”符号将数据分割成“桃子*3”类似的格式
  • 然后将这个类似json格式的数据放进一个map中
  • 在添加进map之前做判断 若map中有这个key 则将之前key对应的value拿出 并与这次
  • 要添加进去的value值相加 / String str = "桃子*3,李子*2,葡萄*3,李子*3,葡萄*2,桃子*4"; // 拿到json格式的一个字符串数组 String[] strs = str.split(","); // 声明一个map用来储存结果 Map map = new HashMap(); for(int i=0;i<strs.length;i++){ // 对数组中的每一个元素进行拆分 (key value 分离 方便进行判断) String[] s=strs[i].split("\"); // 判断: 若 若map中有这个key 则将之前key对应的value拿出 并与这次要添加进去的value值相加 if(map.get(s[0]) == null){ map.put(s[0], Integer.parseInt(s[1])); }else{ map.put(s[0], Integer.parseInt(s[1])+map.get(s[0])); } } System.out.println(map); // ....... // map====>String // 完成 ···