求字符串拆分方法

我想我是醉了 2010-12-10 10:30:38
如果把数据库中的这样一个字符串拆分并累加: XX天XX小时 ,将天数和小时部分分别拆分并且累加,计算小时部分的时候如果满24小时就算一天 即天数部门自动加一天。
求解决,谢谢!
...全文
169 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2010-12-10
  • 打赏
  • 举报
回复

//方法有很多 上边是LINQ的,再帖一个正则实现的
void Main()
{
List<string>list=new List<string>
{
"3天4小时",
"4天2小时",
"5天8小时",
"6天9小时",
"8天11小时",
"9天21小时",
};
int total=0;
foreach(string s in list)
{
Match m =Regex.Match(s,@"(\d+)天(\d+)小时");
if(m.Success)
{
total+= int.Parse(m.Groups[1].Value)*24 +int.Parse(m.Groups[2].Value);
}
}
string result=(int)total/24+"天"+total%24+"小时";
Console.WriteLine(result); //37天7小时
}

q107770540 2010-12-10
  • 打赏
  • 举报
回复

void Main()
{
List<string>list=new List<string>
{
"3天4小时",
"4天2小时",
"5天8小时",
"6天9小时",
"8天11小时",
"9天21小时",
};

var totalHours=(from l in list
let m=l.Split(new string[]{"天","小时"},StringSplitOptions.RemoveEmptyEntries)
select int.Parse(m[0])*24 +int.Parse(m[1])).Sum();

string result=(int)totalHours/24+"天"+totalHours%24+"小时";
Console.WriteLine(result); //37天7小时

}
我想我是醉了 2010-12-10
  • 打赏
  • 举报
回复
也就是有多个X天X小时这样的字符串存进了数据库,我根据主表的ID将数据取出来之后就要将这个字符串进行累加
我想我是醉了 2010-12-10
  • 打赏
  • 举报
回复
不好意思,没描述清楚, 对,是将X天X小时存进去了,就是因为有多条(List)才会去计算
q107770540 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liujin983 的回复:]

首先我是把用户输入的两个时间进行了累加,得出来的结果呈现在TextBox上是:X天X小时,最后讲这个字符串存在了数据库,现在是我将这个字符串从数据库中取出来时要将它的天数部分和小时部分拆分出来并且进行计算,将结果用同样的方式 XX天XX小时 呈现出来
[/Quote]

你不是已经将X天X小时存储进入数据库了么
取的时候直接取出来不就 是 你想要的 X天X小时了?
有多条 X天X小时 合并成一条?
我想我是醉了 2010-12-10
  • 打赏
  • 举报
回复
首先我是把用户输入的两个时间进行了累加,得出来的结果呈现在TextBox上是:X天X小时,最后讲这个字符串存在了数据库,现在是我将这个字符串从数据库中取出来时要将它的天数部分和小时部分拆分出来并且进行计算,将结果用同样的方式 XX天XX小时 呈现出来
qq346127416 2010-12-10
  • 打赏
  • 举报
回复
数据库那一列光累计小时数不就行了么
比如说累计到69
读取出来就是 69/24 + "天" +69%24 +"小时"
q107770540 2010-12-10
  • 打赏
  • 举报
回复
你最好能举个实例出来
我想我是醉了 2010-12-10
  • 打赏
  • 举报
回复
用C#代码来实现
q107770540 2010-12-10
  • 打赏
  • 举报
回复
你想通过SQL语句还是C#代码来实现?
我想我是醉了 2010-12-10
  • 打赏
  • 举报
回复
非常感谢各位!
wuyq11 2010-12-10
  • 打赏
  • 举报
回复
int total=0;
foreach(DataRow dr in dt.Rows)
{
string[] arr=dr[""].ToString().Split(new string[]{"天","小时"},StringSplitOptions.RemoveEmptyEntries);
total+=Convert.ToInt32(arr[0])*24+Convert.ToInt32(arr[1]));
}
TimeSpan ts=new TimeSpan(total,0,0);

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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