将数字字符串字符转换为int32
本文关键字:转换 int32 字符 字符串 数字 数字字符 | 更新日期: 2023-09-27 18:23:46
如果我有一个数字字符串和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]
产生的是Char
,而不是string
。
int a = str[0] - '0';
int b = str[1] - '0';
int c = str[2] - '0';
等等。。。
这之所以有效,是因为str[0]
是char
,'0'
也是,在C#中减去字符会得到int
。
p.S.严格来说,并不是说减去char
s就得到了int
。减法没有为char
定义,但字符可以隐式转换为int
,所以就是这样:两个隐式转换成int
,显然可以相互减去,得到另一个int
您正在使用Convert.ToInt32(char)
重载。试用ToString
:
int a = Convert.ToInt32(str[0].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的验证,以及有效的字符串等。