当前位置: 代码迷 >> ASP.NET >> 字符串相加解决办法
  详细解决方案

字符串相加解决办法

热度:9657   发布时间:2013-02-25 00:00:00.0
字符串相加
有如下字符串可能值为
5
10ml
20ML
120ml*4
360+120ML
360+100ml
500ML+300ML
如何转换对应为
5
10
20
120
480
460
800


------解决方案--------------------------------------------------------
下面可以将每行的数组提取出来,不过你要处理一下运算符号,乘除加减,或者你改用其他方法
C# code
            StreamReader reader = new StreamReader("c:\\1.txt",Encoding.Default);            while (!reader.EndOfStream)            {                int num = 0;                string str = reader.ReadLine();                Regex reg = new Regex(@"(?is)\d+");                MatchCollection mc = reg.Matches(str);                foreach (Match m in mc)                {                    num += Convert.ToInt32(m.Value);                }                MessageBox.Show(num.ToString());            }
------解决方案--------------------------------------------------------
^\d+就可以了。
------解决方案--------------------------------------------------------
应该没什么简单的办法吧

C# code
string text = @"5                            10ml                            20ML                            120ml*4                            360+120ML                            360+100ml                            500ML+300ML";            text = Regex.Replace(text, "[a-zA-Z]", "");            text = Regex.Replace(text, @"(?!\d+)(\*.*)", "");            var matches = Regex.Matches(text, @"(\d+)(\+(\d+))*");            foreach (Match match in matches)            {                if (match.Groups[2].Success)                    Console.WriteLine(Convert.ToInt32(match.Groups[1].Value)                    +                     Convert.ToInt32(match.Groups[3].Value));                else                    Console.WriteLine(Convert.ToInt32(match.Groups[1].Value));            }
------解决方案--------------------------------------------------------
C# code
string[] source = {    "5",    "10ml",    "20ML",    "120ml*4",    "360+120ML",    "360+100ml",    "500ML+300ML",};System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"([^\d\+\*])|(\*\d+)");System.Data.DataTable dt = new System.Data.DataTable();foreach (string s in source){    string result = dt.Compute(reg.Replace(s, string.Empty), null).ToString();}
------解决方案--------------------------------------------------------
C# code
string[] strs ={ "5",                                "10ml",                                "20ML",                                "120ml*4",                                "360+120ML",                                "360+100ml",                                "500ML+300ML"};                foreach (string str in strs)                {                                       var filteredStr=Regex.Replace(str,@"[^\d+*?\d+]", "");                    MatchCollection ms = new Regex(@"(?<!.+)\d+|(?<=\+)\d+").Matches(filteredStr);                    int num = 0;                    foreach (Match r in ms) { num += int.Parse(r.Value); };                    Response.Write(num+"<br/>");
  相关解决方案