如何将字符串转换为int

时间:2013-12-18 03:32:01

标签: c#

我有一组名为这样的对象:

_1,_2,_3 .... _n

不是数组,只是自定义控件中的一堆对象。我想将名称转换为int。首先我删除_,但如果使用

    private void Superficie_MouseDown(object sender, MouseButtonEventArgs e)
    {
        int index = 0;
        Shape myShape = ((Shape)sender);
        string lcNombre = myShape.Name.Remove(0, 1);

        //--------------------------------------------------------------------
        // Those are my tryes  
        // Doesn't work because it must expect a nullable value 
        index = lcNombre as decimal; 

        // Doesn't work  Can't convert string to int
        index = (int)lcNombre;
        //--------------------------------------------------------------------


        if (index > 0)
        {
            bool lIsSelected =  !Pieza.Superficies.Where(x=>x.Id == index).First().IsSelected;
            Pieza.Superficies.Where(x => x.Id == index).First().IsSelected = lIsSelected;

            if (lIsSelected)
                myShape.Fill = new SolidColorBrush(SystemColors.HotTrackColor);
            else
                myShape.Fill = new SolidColorBrush(SystemColors.ControlLightLightColor);
        }
    } 

我该怎么做才能施展它?

5 个答案:

答案 0 :(得分:5)

最直接的方法是

index = int.Parse(lcNombre);

如果你不完全确定lcNombre是否真的是一个整数,你可以使用

int result;
bool isInt = int.TryParse(lcNobre, out result);

最后你可以使用

index = Convert.ToInt32(lcNobre);

如果输入值不能转换为整数,则此方法(如int.Parse())将抛出FormatException。

答案 1 :(得分:1)

您还可以使用Convert静态方法:

index = Convert.ToInt32(lcNombre);

MSDN链接:http://msdn.microsoft.com/en-us/library/sf1aw27b(v=vs.110).aspx

错误明智..您可能想要使用TryParse ..因为它会返回true或false,具体取决于成功转换:

int index;

if (int.TryParse(lcNombre, out index)) {
    // conversion successful
}
else {
    // couldn't convert
}

int.TryParsehttp://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx

的MSDN链接

答案 2 :(得分:1)

试试这个

int result=0;
Int32.TryParse(lcNombre,out result);

答案 3 :(得分:0)

我最喜欢的方法是按照以下方式制作扩展方法

public static class ExtensionMethods
{
    public static int? AsInteger( this string str)
    {
        int value;
        if ( int.TryParse( str, out value ) )
        {
            return value;
        }
        else
        {
            return null;
        }
    }
}

那么你可以这个

index = lcNombre.AsInteger() ?? 0;

答案 4 :(得分:0)

string strArr[] = myShape.Name.Split('_',StringSplitOptions.RemoveEmptyEntries)

int num;
int.TryParse(strArr[0],num);