获取字符串中的数字并进行循环

时间:2014-03-06 12:55:49

标签: c# string numbers

我想获取一个字符串,并将字符串和数字分开,然后执行循环并调用方法字符串所说的次数。 字符串必须具有以下结构:“ABJ3”(只接受一个数字,前面有3个字符)

这是我的代码,但它重复了数百次,我不知道为什么

            int veces = 0;
            for (int i = 0; i < m.Length; i++)
            {
                if (Char.IsDigit(m[i]))
                    veces = Convert.ToInt32(m[i]);
            }

            if (m.Length == 4)
            {
                for (int i = 0; i <= veces; i++)
                {
                    m = m.Substring(0, 3);
                    operaciones(m, u, t);
                    Thread.Sleep(100);
                }
            }
            operaciones(m,u,t);
            if (u.Length >= 14)
            {
                u = u.Substring(0, 15);
            }

请帮忙吗?

2 个答案:

答案 0 :(得分:0)

你现在要转换你的m [i] ToString(),你现在将char值发送给Convert.ToInt32,这是一个更高的值(例如9 = 57)

char t = '9';

int te = Convert.ToInt32(t.ToString());

Console.WriteLine(te);

这给了我们9的结果但是

char t = '9';

int te = Convert.ToInt32(t);

Console.WriteLine(te);

给我们57的结果

所以你需要改变

veces = Convert.ToInt32(m[i]);

veces = Convert.ToInt32(m[i].ToString());

希望它有所帮助。

最好的问候// KH。

答案 1 :(得分:0)

您无法像这样转换数字。你正在覆盖它们,只拿最后一个。而且,你使用的是ASCII码,而不是数字值。您必须先提取所有数字然后转换它们:

int position = 0;
int veces = 0;
string temp = ""
for (int i = 0; i < m.Length; i++) {
  if (Char.IsDigit(m[i]))
    position = i;
  else
    break;
}
veces = Convert.ToInt32(m.SubString(0, i + 1));

或者,您可以使用正则表达式。