怎么按格式取数据和替换

cenlmmx 2006-05-20 03:03:48
string temp = "milk(2 ml)";
temp = Regex.Replace(med, @"[^(\d+)]", ""); //temp = (2 ml)
int dosDefine = int.Parse(temp.Substring(temp.IndexOf("(") + 1).Replace(")" , ""));
int dosage = wt/unit * dosDefine; //数值运算
ret = Regex.Replace(med, @"[\d+?]", dosage.ToString()); //替换2ml中的2,比如dosage=4,那么ret=milk(4 ml)

自己感到方法很苯,而且如果temp=m5ilk(2 ml)的话,那第二行temp=5(2 ml)明显不对.
temp参数都是这样的格式:
milk(20 ml),medicine(3 ml),mil5k(500 ml),mil5k(500 cc)就是前面一个任意的字符串跟着(int数据 ml|cc).
请问怎么更好得用正则表达式来做到把milk(2 ml)的2取出并经过计算后再替换掉2?
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cenlmmx 2006-05-24
  • 打赏
  • 举报
回复
谁能去http://community.csdn.net/Expert/TopicView3.asp?id=4735740回一个,我好结贴.顺便把本贴也结了.
cenlmmx 2006-05-20
  • 打赏
  • 举报
回复
自己顶
cenlmmx 2006-05-20
  • 打赏
  • 举报
回复
string med = "milk(2 ml)";
string temp = Regex.Replace(med, @".*\(|ml\)|each\)|cc\)", "");
int dosage = wt/unit * int.Parse(temp);
string ret = Regex.Replace(med, @"\(\d+", "(" + dosage.ToString());
比上面好些了,谁能再给些意见?
goldanycom 2006-05-20
  • 打赏
  • 举报
回复
.net技术群 1号群:23266021,此群已满!
2号群已经开放:4510861
请大家赶快加入!
cenlmmx 2006-05-20
  • 打赏
  • 举报
回复
用indexof,substring等办法也勉强可以,但我觉得可能用正则表达式能好些
cenlmmx 2006-05-20
  • 打赏
  • 举报
回复
就是一种格式的字符串: \w+(\d+ ml|cc)
()两个括号是固定的,就是取括号里的int数据并经过计算后再替换这个int数据
milk(2 ml)-->取出2-->2计算后得到4-->milk(4 ml)
qwerttyy 2006-05-20
  • 打赏
  • 举报
回复
……没看明白。

110,500

社区成员

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

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

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