C#学习教程:使用LINQ解析字符串中的数字比如我们有这样一个字符串:"$%^DDFG67231"结果一定是"67231"再稍微多一点:难道只能取前三个数吗?这会给你你的字符串stringresult=newString("y0urstr1ngW1thNumb3rs".Where(x=>Char.IsDigit(x)).ToArray());并用于前3个字符。在ToArray()ToArray()之前使用.Take(3)以下内容应该有效。varmyString="$%^DDFG67231";//请注意,这仍然是一个IEnumerable对象,需要//转换为int或您想要的任何类型。varmyNumber=myString.Where(a=>char.IsNumber(a)).Take(3);不清楚您是希望将23视为一个数字序列,还是两个不同的数字。我上面的解决方案假设您希望最终结果为672publicstaticstringDigitsOnly(stringstrRawData){returnRegex.Replace(strRawData,"[^0-9]","");}stringtestString="$%^DDFG67231";stringcleaned=newstring(testString.ToCharArray().Where(c=>char.IsNumber(c)).Take(3).ToArray());如果你想使用白名单(不总是数字):char[]acceptedChars={'0','1','2','3','4','5','6','7','8','9'};stringcleaned=newstring(testString.ToCharArray().Where(c=>acceptedChars.Contains(c)).Take(3).ToArray());这样的事情怎么样?varyourstring="$%^DDFG67231";varselected=yourstring.ToCharArray().Where(c=>c>='0'&&cRegex:privateintParseInput(stringinput){System.Text.RegularExpressions.Regexr=newSystem.Text.RegularExpressions.Regex(@"d+");stringvalueString=string.Empty;foreach(System.Text.RegularExpressions.Matchmatchinr.Matches(input))valueString+=match.Value;returnConvert.ToInt32(valueString);}甚至更多微妙:只能获取前三个数字吗?以上是C#学习教程:ParsingnumbersinstringswithLINQ如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注---privatestaticintParseInput(stringinput,inttake){System.Text.RegularExpressions.Regexr=newSystem.Text.RegularExpressions.Regex(@"d+");字符串valueString=string.Empty;foreach(System.Text.RegularExpressions.Matchmatchinr.Matches(input))valueString+=match.Value;值字符串=值字符串。Substring(0,Math.Min(valueString.Length,take));返回Convert.ToInt32(valueString);}>'stringstrRawData="12#$%33fgrt$%$5";>string[]arr=Regex.Split(strRawData,"[^0-9]");inta1=0;>foreach(stringvalueinarr){Console.WriteLine("lineno."+a1+"="+value);a1++;}'输出:第0行=12第1行=第2行=第3行=33第4行=第5行=第6行=第7行=第8行=lineno.9=lineno.10=5按任意键继续。..本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。
