请问一下C#如何截取(刘德华#200#300#400)成(刘德华#900)

qiyuxiaozi 2008-10-11 11:52:08
用c#的高手给个算法
题是
刘德华#200#300#400
成龙#89#30
李连杰#50#1400#1
周星驰#110#20#60#70
结果是
刘德华#900
成龙#129
李连杰#1451
周星驰#260
帮忙想一下啊
...全文
47 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2008-10-12
  • 打赏
  • 举报
回复
提供另一种解法:

string str = @"刘德华#200#300#400
成龙#89#30
李连杰#50#1400#1
周星驰#110#20#60#70 ";
foreach (Match match in Regex.Matches(str, @"[^#\d]+(?<num>[#\d]+)"))
{
int sum=0;
string count = Regex.Replace(match.Groups["num"].Value, @"#(\d+)",
new MatchEvaluator(delegate(Match m)
{
sum += int.Parse(m.Groups[1].Value);
return m.NextMatch().Success ? "" : "#" + sum.ToString();
}));
str = str.Replace(match.Groups["num"].Value, count);
}
Console.WriteLine(str);
qiyuxiaozi 2008-10-12
  • 打赏
  • 举报
回复
谢谢你哦!~!
wuyi8808 2008-10-12
  • 打赏
  • 举报
回复
using System;

class Program
{
static string Convert(string s)
{
string[] t = s.Split('#');
if (t.Length < 2) return s;
int i;
int sum = 0;
foreach (string u in t)
{
if (int.TryParse(u, out i)) sum += i;
}
return string.Format("{0}#{1}", t[0], sum);
}

static void Main()
{
string s = @"刘德华#200#300#400
成龙#89#30
李连杰#50#1400#1
周星驰#110#20#60#70";
foreach (string t in s.Split('\n'))
{
Console.WriteLine(Convert(t));
}
}
}
/* 程序输出:
刘德华#900
成龙#119
李连杰#1451
周星驰#260
*/
qiyuxiaozi 2008-10-12
  • 打赏
  • 举报
回复
有没有一个方法吧所有的全部解决的
您说的用Split('#')
我也知道 不过一个一个的求太麻烦了 我想简化下
wuyi8808 2008-10-11
  • 打赏
  • 举报
回复
Split('#'),然后int.Parse(),求和。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧