在我的计划中,我有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.Value
是string
答案 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.