动态字符串截取
本帖最后由 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;
}