【问题标题】:Converting String format to integer is possible..? [closed]可以将字符串格式转换为整数..? [关闭]
【发布时间】:2014-04-25 09:17:36
【问题描述】:

我想知道是否可以将字符串转换为 int 格式。

例如:我需要将文本框值存储到 int 类型的变量状态中。
那么,是否可以存储它..?

我的输入值为字符串“Chennai”,
如果我使用 int.Parse(textbox1.text) 传递它,则显示输入字符串的格式不正确。

int state=textbox1.text;

【问题讨论】:

    标签: asp.net c#-4.0 textbox


    【解决方案1】:

    现在我们有了更多信息

    听起来您根本不想解析 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.Parseint.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 和其他数字类型。

    您还应该考虑您期望数字所处的文化 - 与非整数值相比,整数不是问题,但仍然需要考虑。

    【讨论】:

    • 我已经试过这个方法了..它没有用..
    • @farokemoahmed:a)您应该在问题中这么说; b) 你应该告诉我们它在什么方式中不起作用; c) 你应该告诉我们textbox1.Text 的值。我可以向你保证 int.Parse 确实 工作,如果你给它正确的输入......
    • 请检查我的帖子,我已经更新了它。我在文本框中传递字符串值,例如:像 New Jercy 这样的州名
    • @farokemoahmed:你怎么希望我们知道这一点?你认为“新泽西”最终会是什么数字?这只是不是一个数字吗?
    • 我实际上没有传递数字,我正在将字符串传递到文本框.. 所以我想知道是否可以转换字符串值并存储在 int 变量中。
    【解决方案2】:

    修改后:
    看起来您正在寻找 Jon Skeet 在他的帖子中显示的字典映射器,或者一个枚举(如果您的字符串是措辞的话):

        enum MyEnum
        {
          Chennai = 1,
          ABCD = 2,
        }
    

    并且您想将您选择的值转换为整数: 使用这个:

    Enum.TryParse

        MyEnum val;
        if (Enum.TryParse(textbox1.Text, out val))
        {
            int myIntVal = (int)val; // myIntVal = 1
        }
        else
        { 
            // error
        }
    

    编辑前:

    使用:

    int.Parse

    int val = int.Parse(textbox1.Text);
    

    根据@huMpty duMpty 的要求进行编辑:
    如果不确定文本框的输入值,请使用 int.TryParse:

    int.TryParse

    int val;
    if(int.TryParse(textbox1.Text, out val))
    {
       // val is a number
    }
    else
    {
       // val isn't a number
    }
    

    【讨论】:

    • 如果文本框包含字符串值会中断!!
    • 如果应用程序崩溃,这也会中断。
    • 无论如何,我已经编辑了帖子。
    • 我已经试过这个方法了..它没有用..
    • 那么你可能做错了什么。请发布整个代码,我们将为您提供帮助。
    【解决方案3】:

    使用Int32.TryParse

    int state;
    
    int.TryParse(textbox1.text, out state);
    

    【讨论】:

    • 除非不忽略返回值,否则希望。另请注意,在调用 TryParse 之前初始化 state 是没有意义的。
    • 但是还是忽略了返回值,我明白了……
    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2012-05-01
    • 1970-01-01
    • 2016-01-07
    • 2012-09-24
    相关资源
    最近更新 更多