字符串 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);
}
}
桃子*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]);
}
什么鬼 什么代码都来了 楼主问也说详细点啊。。。
/**
···java
/**