C# 将数字字符串转换为int32

C# 将数字字符串转换为int32,c#,C#,如果我有一串数字和int变量a,b,c,我想把第一个数字赋给int a,第二个赋给int b,依此类推,我该怎么做?这段代码说明了我的问题: var str = "123"; int a = Convert.ToInt32(str[0]); Console.WriteLine(str[0] + " " + a ); 输出: 1 49 除了从每次尝试的转换中减去48,我还能做什么 编辑 今天我了解到str[0]生成的是字符,而不是字符串。您使用的是Convert.ToInt32char重载。尝试

如果我有一串数字和int变量a,b,c,我想把第一个数字赋给int a,第二个赋给int b,依此类推,我该怎么做?这段代码说明了我的问题:

var str = "123";
int a = Convert.ToInt32(str[0]);
Console.WriteLine(str[0] + " " + a );
输出:

1 49 除了从每次尝试的转换中减去48,我还能做什么

编辑

今天我了解到str[0]生成的是字符,而不是字符串。

您使用的是Convert.ToInt32char重载。尝试使用ToString:

另一种我并不擅长的数学方法

string x = "123";
int number = int.Parse(x);
int first = number / 100;
int second = (number % 100) / 10;
int third = number % 10;

以Selman22的答案为基础:

var str = "123";
int digit = GetDigit(str, 1);
Response.Write(digit.ToString()); // Prints '1'

int GetDigit(String s, Int32 digitPos)
{
  var actualDigitPos = (s.Length - digitPos) + 1;
  var number = Int32.Parse(s);

  return (number % (Int32)Math.Pow(10, actualDigitPos)) / (Int32)Math.Pow(10, actualDigitPos - 1);
}
请记住,您应该在字符串长度和digitPos以及有效字符串等方面添加某种验证

int a = str[0] - '0';
int b = str[1] - '0';
int c = str[2] - '0';
等等

这是因为str[0]是一个字符,“0”也是一个字符,在C中减去字符会得到一个int


另外,严格地说,并不是减法字符会得到一个整数。减法不是为字符定义的,但是字符可以隐式转换为整数,所以会发生这样的情况:两个隐式转换为整数,这些显然可以相互减法得到另一个整数。

好的。看起来很笨重。没有比这更优雅的方式了吗?ThanksA third way int b=转换为32str.子字符串1,1;为什么不在0处使用str而不是index?我想我不明白。也许你不明白。我想要int a==1,int b==2,int c==3。旁注:string通常指的是c问题中的字符串类型,在你的例子中,你指的是用char type表示的字符串中的字符。使用恰当的词语可以帮助您找到解决方案,即使用比您已接受的C风格解决方案更多的C/.Net方法进行复制,或者至少可以帮助其他人回答。谢谢。我不知道str[0]是字符。显然,如果我早知道的话,我就不会问这个问题了。在问…+1 C型解决方案之前,我确实尝试过搜索。对于.Net,请检查一次。严格地说,这完全是除了从问题的每一次尝试转换中减去48…好吧。。。我认为Car到int的转换是C风格的,并且我认为在一天结束时解析一个字符号既不是一个好主意,也不是更习惯于C.,在我看来,这比int a= char。
int a = str[0] - '0';
int b = str[1] - '0';
int c = str[2] - '0';