将字符串转换为int时遇到问题

时间:2014-03-10 20:34:39

标签: c# regex wpf treeview

在我的计划中,我有treeView。在我使用的部分中,节点的displayNames是数字integer值,但显示为strings。我已经在我的程序中找到了一点,我需要转换并将这些displayNames暂时存储在integer变量中。我通常使用Regex.Match()来执行此操作没有问题,但在这种情况下,我收到编译器错误:Cannot implicitly convert type 'string' to 'int'

这是我的代码:

//This is the parent node as you may be able to see below
//The children of this node have DisplayNames that are integers
var node = Data.GetAllChildren(x => x.Children).Distinct().ToList().First(x => x.identify == 'B');

//Get # of children -- if children exist
if (node.Children.Count() > 0)
{
     for (int i = 0; i < node.Children.Count(); i++)
     {
          //Error on this line!!**
          IntValue = Regex.Match(node.Children.ElementAt(i).DisplayName.Value, @"\d+").Value;
     }
}

*注意:DisplayName.Valuestring

2 个答案:

答案 0 :(得分:3)

要从string转换为int,请使用int.Parse(string),它返回由传递的字符串表示的int,如果输入格式不正确则抛出。

int.Parse(node.Children.ElementAt(i).DisplayName.Value)

如果你不想抛出,你也可以使用int.TryParse。在这种情况下,你会使用:

int parsedValue;
if (int.TryParse(node.Children.ElementAt(i).DisplayName.Value, out parsedValue))
{
  ///Do whatever with the int
}

答案 1 :(得分:1)

问题是因为您在此次通话中从Match投射到int

IntValue = Regex.Match(node.Children.ElementAt(i).DisplayName.Value, @"\d+").Value;

尝试这样的事情:

Match m = Regex.Match(node.Children.ElementAt(i).DisplayName.Value, @"\d+").Value;
int value = m.Matches[0] //You'll have to verify this line, I'm going from memory here.