Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取字符串中的数字并执行循环_C#_String_Numbers - Fatal编程技术网

C# 获取字符串中的数字并执行循环

C# 获取字符串中的数字并执行循环,c#,string,numbers,C#,String,Numbers,我想得到一个字符串的数字,把字符串和数字分开,然后,做一个循环,调用一个方法,这个方法调用字符串的次数。 字符串必须具有以下结构:“ABJ3”(只接受一个数字,前面有3个字符) 这是我的代码,但它重复了数百次,我不知道为什么 int veces = 0; for (int i = 0; i < m.Length; i++) { if (Char.IsDigit(m[i]))

我想得到一个字符串的数字,把字符串和数字分开,然后,做一个循环,调用一个方法,这个方法调用字符串的次数。 字符串必须具有以下结构:“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);
            }
int向量=0;
对于(int i=0;i

请提供一些帮助?

您必须立即将m[i]转换为字符串(),现在将char值发送到convert.ToInt32,这是一个更高的值(例如9=57)

这给了我们9的结果,但是

char t = '9';

int te = Convert.ToInt32(t);

Console.WriteLine(te);
给我们一个57的结果

所以你需要改变

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

希望有帮助


致以最诚挚的问候//KH。

您不能像这样转换数字。您正在覆盖它们并只获取最后一个。此外,您获取的是其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));
int位置=0;
整数向量=0;
字符串temp=“”
对于(int i=0;i

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

是的,它工作正常,但返回veces+2次感谢您的快速回复
veces = Convert.ToInt32(m[i].ToString());
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));