【发布时间】:2014-04-25 09:17:36
【问题描述】:
我想知道是否可以将字符串转换为 int 格式。
例如:我需要将文本框值存储到 int 类型的变量状态中。
那么,是否可以存储它..?
我的输入值为字符串“Chennai”,
如果我使用 int.Parse(textbox1.text) 传递它,则显示输入字符串的格式不正确。
int state=textbox1.text;
【问题讨论】:
我想知道是否可以将字符串转换为 int 格式。
例如:我需要将文本框值存储到 int 类型的变量状态中。
那么,是否可以存储它..?
我的输入值为字符串“Chennai”,
如果我使用 int.Parse(textbox1.text) 传递它,则显示输入字符串的格式不正确。
int state=textbox1.text;
【问题讨论】:
现在我们有了更多信息
听起来您根本不想解析 numeric 字符串,这是对原始问题的明显解释。
如果要将字符串映射到数字,则需要某种预定义的映射,例如
private static readonly Dictionary<string, int> StateNameMap = new
Dictionary<string, int>() {
{ "New Jersey", 1 },
{ "California", 2 },
...
};
那么你可以使用:
int state;
if (StateNameMap.TryGetValue(textbox1.Text, out state))
{
// Success
}
else
{
// Input was not a known state name. What do you want to do?
}
原答案
您当然可以使用int.Parse 或int.TryParse 将字符串解析为整数。例如:
// This will just throw an exception if the text is not a valid int
int state = int.Parse(textbox1.Text);
或者:
int state;
if (int.TryParse(textbox1.Text, out state))
{
// Success! Use state
}
else
{
// Invalid text - what do you want to do?
}
这是 .NET 中常用的解析模式,包括 DateTime 和其他数字类型。
您还应该考虑您期望数字所处的文化 - 与非整数值相比,整数不是问题,但仍然需要考虑。
【讨论】:
textbox1.Text 的值。我可以向你保证 int.Parse 确实 工作,如果你给它正确的输入......
修改后:
看起来您正在寻找 Jon Skeet 在他的帖子中显示的字典映射器,或者一个枚举(如果您的字符串是措辞的话):
enum MyEnum
{
Chennai = 1,
ABCD = 2,
}
并且您想将您选择的值转换为整数: 使用这个:
MyEnum val;
if (Enum.TryParse(textbox1.Text, out val))
{
int myIntVal = (int)val; // myIntVal = 1
}
else
{
// error
}
编辑前:
使用:
int val = int.Parse(textbox1.Text);
根据@huMpty duMpty 的要求进行编辑:
如果不确定文本框的输入值,请使用 int.TryParse:
int val;
if(int.TryParse(textbox1.Text, out val))
{
// val is a number
}
else
{
// val isn't a number
}
【讨论】:
int state;
int.TryParse(textbox1.text, out state);
【讨论】:
TryParse 之前初始化 state 是没有意义的。