日期:2014-05-17  浏览次数:20835 次

动态字符串截取
本帖最后由 xp447196763 于 2013-04-02 14:14:15 编辑
现有一个尺寸:1234mm×421M
而mm和M是单位,是会变化的,有可能是g、KG、M2、PS等等。
而这个尺寸在文本框里,我怎么得到1234和421呢?

------解决方案--------------------
 int first, second;
            string str = "1234mm×421M";
            int i=0;
           foreach(Match m in Regex.Matches(str, @"\d+"))
            {
                if (i == 0)
                    first = int.Parse(m.Value);
                else if (i == 1)
                {
                    second = int.Parse(m.Value);
                    break;
                }
                i++;
            }

------解决方案--------------------
用2楼说的正则表达式也行,如果不会用,其实方法有很多的,通俗的方法,你可以先用"x"好split哈,然后再遍历,是数字的就取出...其实像这种匹配的,一般用正则表达式比较方便.毕竟,它都是经过过去的牛人们研究出来的...
------解决方案--------------------
 string str = "1234mm×421M";
            int[] array = System.Text.RegularExpressions.Regex.Split(str, @"\D+").Where(t => t != "").Select(t => Convert.ToInt32(t)).ToArray();

------解决方案--------------------
正则表达式吧  虽然我也不是很会用但是应该是最适合你这种情况的了 上面的牛人给出了代码  你可以参照参考书或者资料看一下   
------解决方案--------------------


System.Text.RegularExpressions.MatchCollection mc =System.Text.RegularExpressions.Regex.Matches("1234mm×421M", @"(?<x>\d+)([a-zA-Z])+×(?<y>\d+)([a-zA-Z])+");

            if (mc != null && mc.Count > 0)
            {

                foreach (System.Text.RegularExpressions.Match m in mc)
                {

                    string a = m.Groups["x"].Value;

                    string b = m.Groups["y"].Value;

                }