从字符串中获取多个数字

我有类似的字符串

AS_!SD 2453iur ks @ d9304-52kasd

我需要获得字符串的2个frumb numbres:

对于那种情况将是: 24539304

我在字符串中没有任何分隔符来尝试拆分,并且数字和字符串的长度是可变的,我在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);