从字符串中获取多个数字
我有类似的字符串
AS_!SD 2453iur ks @ d9304-52kasd
我需要获得字符串的2个frumb numbres:
对于那种情况将是: 2453
和9304
我在字符串中没有任何分隔符来尝试拆分,并且数字和字符串的长度是可变的,我在WPF中的C#framework 4.0中工作。
谢谢你的帮助,抱歉我的英语不好
该解决方案将采用两个第一个数字,每个数字可以包含任意数量的数字
string s = "AS_!SD 2453iur ks@d9304-52kasd"; MatchCollection matches = Regex.Matches(s, @"\d+"); string[] result = matches.Cast() .Take(2) .Select(match => match.Value) .ToArray(); Console.WriteLine( string.Join(Environment.NewLine, result) );
将打印
2453 9304
你可以通过result.Select(int.Parse).ToArray();
它们解析为int[]
result.Select(int.Parse).ToArray();
你可以循环解析它们的字符串的字符,如果你得到一个exception字母,如果不是一个数字,你必须有一个列表来添加这两个数字,以及一个计数器来限制它。
遵循伪代码:
for char in string: if counter == 2: stop loop if parse gets exception continue else loop again in samestring stating this point if parse gets exception stop loop else add char to list
或者,您可以使用ASCII编码:
string value = "AS_!SD 2453iur ks@d9304-52kasd"; byte zero = 48; // 0 byte nine = 57; // 9 byte[] asciiBytes = Encoding.ASCII.GetBytes(value); byte[] asciiNumbers = asciiBytes.Where(b => b >= zero && b <= nine) .ToArray(); char[] numbers = Encoding.ASCII.GetChars(asciiNumbers); // OR string numbersString = Encoding.ASCII.GetString(asciiNumbers); //First two number from char array int aNum = Convert.ToInt32(numbers[0]); int bNum = Convert.ToInt32(numbers[1]); //First two number from string string aString = numbersString.Substring(0,2);