从字符串中获取多个数字

时间:2013-03-21 14:41:56

标签: c# wpf string numbers

我有像

这样的字符串
  

AS_!SD 2453iur ks @ d9304-52kasd

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

对于那种情况,

将是: 24539304

我在字符串中没有任何分隔符来尝试拆分,并且数字和字符串的长度是可变的,我在WPF中的C#framework 4.0中工作。

感谢您的帮助,抱歉我的英语不好

3 个答案:

答案 0 :(得分:9)

此解决方案将采用两个第一个数字,每个数字可以包含任意数量的数字

string s =  "AS_!SD 2453iur ks@d9304-52kasd";

MatchCollection matches = Regex.Matches(s, @"\d+");

string[] result = matches.Cast<Match>()
                         .Take(2)
                         .Select(match => match.Value)
                         .ToArray();

Console.WriteLine( string.Join(Environment.NewLine, result) );

将打印

2453
9304

您可以int[]

将其解析为result.Select(int.Parse).ToArray();

答案 1 :(得分:0)

你可以循环解析它们的字符串的字符,如果你有一个字母,如果不是一个数字,你必须有一个列表来添加这两个数字,以及一个计数器来限制它。

遵循伪代码:

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

答案 2 :(得分:0)

或者,您可以使用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);