C# 如何将字符串转换为int和count?

C# 如何将字符串转换为int和count?,c#,string-conversion,C#,String Conversion,但这不起作用,不是一个好办法 也许我需要在变量tt和yy之后计算X和Y? 我想计算循环执行变量tt的次数和执行变量yy的次数。只需输入int变量和make++就可以得到将它们分离为X和Y所需的整体框架。因此,如果我有6个框架,那么X将是3,Y将是3。编辑 要使此代码正常工作 X = string.Format("Frame_X_{0} ", i + 1); Y = string.Format("Frame_Y_{0} ", i + 1); int c = Convert.ToInt32(X)

但这不起作用,不是一个好办法

也许我需要在变量tt和yy之后计算X和Y? 我想计算循环执行变量tt的次数和执行变量yy的次数。只需输入int变量和make++就可以得到将它们分离为X和Y所需的整体框架。因此,如果我有6个框架,那么X将是3,Y将是3。

编辑

要使此代码正常工作

X  = string.Format("Frame_X_{0} ", i + 1);
Y  = string.Format("Frame_Y_{0} ", i + 1);
int c = Convert.ToInt32(X);
int d = Convert.ToInt32(Y);
framesNumberX += c;
framesNumberY += d;
你需要像这样提取数字

  X  = string.Format("Frame_X_{0} ", i + 1);
  Y  = string.Format("Frame_Y_{0} ", i + 1);
  int c = Convert.ToInt32(ExtractNumbers(X));//modfied code line
  int d = Convert.ToInt32(ExtractNumbers(Y));//modfied code line
  framesNumberX += c;  framesNumberY += d;

上一个Ans

好办法是

static string ExtractNumbers( string expr )
{
 return string.Join( null,System.Text.RegularExpressions.Regex.Split( expr, "[^\\d]" ) );
}
检查字符串是否可转换。Int32()不是
Val()
方法,换句话说,它不会只从任何字符串中获取数字。使用
Convert.Int32()
时,整个字符串必须是数字,例如:

static void Main()
    {
    // Convert string to number.
    string text = "123";
    int num = -1;
      if( int.TryParse (text,out num))
    Console.WriteLine(num);
    }
如果我理解正确,您正在尝试将某些内容转换为int并同时计数(此处)

上述内容最好写为:

X  = string.Format("Frame_X_{0} ", i + 1); 
Y  = string.Format("Frame_Y_{0} ", i + 1); 
// blows up with an exception
int c = Convert.ToInt32(X); 
int d = Convert.ToInt32(Y); 
framesNumberX += c; 
framesNumberY += d; 
或者——这将更加清楚;首先进行数学运算,然后在
string.Format()调用中使用结果

X  = string.Format("Frame_X_{0} ", i + 1); 
Y  = string.Format("Frame_Y_{0} ", i + 1); 

framesNumberX++; 
framesNumberY++;

// or (depending on what you need)
framesNumberX = i + 1;
framesNumberY = i + 1;
但是,framesNumberX和framesNumberY将彼此相等,并且等于迭代器
i+1
。这就是我开始失去变量的目的的地方。如果您能用伪代码明确您正试图实现的目标,这将有所帮助:

framesNumberX = i + 1;
framesNumberY = i + 1;

X  = string.Format("Frame_X_{0} ", framesNumberX); 
Y  = string.Format("Frame_Y_{0} ", framesNumberY); 

这个问题毫无意义。。。它充满了杂乱无章的句子。你得到了什么确切的结果?Ramhound我没有得到任何结果,因为无法将X和Y以这种方式转换为int。我得到的是错误非法字符。@user1526380-这意味着你试图转换的不是number@user1526380-如果答案对您有效,请不要忘记将其标记为已接受你…@ChrisGessler-除了作者有问题外,没有告诉我们他得到了什么结果,
int.Parse
是一种不同的方法,然后
Convert.Int32()
@ChrisGessler-我更新了代码…@ChrisGessler,但是再次更新。这真的是OP第一次在代码中有他/她不知道的东西吗?@PranayRana-int.Parse会在字符串不是数字的情况下抛出异常。在这样的情况下使用TryParse要好得多。@Ramhound-是的,谢谢你把它弄出来。。。
X  = string.Format("Frame_X_{0} ", i + 1); 
Y  = string.Format("Frame_Y_{0} ", i + 1); 

framesNumberX++; 
framesNumberY++;

// or (depending on what you need)
framesNumberX = i + 1;
framesNumberY = i + 1;
framesNumberX = i + 1;
framesNumberY = i + 1;

X  = string.Format("Frame_X_{0} ", framesNumberX); 
Y  = string.Format("Frame_Y_{0} ", framesNumberY); 
public void MyMethod()
{
   ... code here

   // trying to `your explanation`
   ... code here


    // and here, I'm trying to `your explanation`
    ... code here

}