【发布时间】:2016-05-24 13:18:35
【问题描述】:
尝试从字符串列表中选择最大位数:
int maxDigit = this.myList.Where(x=> x.Name.Any(Char.IsDigit))
.Select(x => int.Parse(x.Name)).DefaultIfEmpty(0).Max();
int.Parse(x.Name) 导致异常,因为它返回整个名称字符串,例如'myValue99' 当然不能解析为 int。我只想返回 99。我不知道数字在字符串中的位置,因此例如不能取最后两个。
对于字符串不包含数字的情况,我需要 DefaultIfEmpty。
【问题讨论】:
-
如果字符串是“55 stuff 66”,那么解析后的
int应该是什么? -
好点,但在这种情况下,我不必担心。只会成为我的东西1、stuff99 等。
-
列表和 Linq 部分无关。相同的规则适用于单个字符串。参见例如Find and extract a number from a string、Split numeric part from alphanumeric string using C#、Extract numbers from string to create digit only string 等。
-
您想让
"9 and 9"变成99或9还是18或81?