在将string转换为int时遇到问题

本文关键字:遇到 问题 int string 转换 在将 | 更新日期: 2023-09-27 17:49:27

在我的程序中,我有一个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

在将string转换为int时遇到问题

使用int. parse (string)将字符串转换为整型,它返回传入字符串所表示的整型,如果输入格式不正确则抛出。

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

也可以使用int。如果你不想要抛出的话,试试parse。在这种情况下,您可以使用:

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

这个问题是因为你在这个调用中从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.