1

私は次のような文字列を持っています

AS_!SD 2453iur ks@d9304-52kasd

文字列の 2 つのフリスト番号を取得する必要があります。

その場合は次のようになります 24539304

分割を試みる文字列に区切り文字がなく、数字と文字列の長さが可変です。WPF の C# フレームワーク 4.0 で作業しています。

助けてくれてありがとう、そして私の悪い英語でごめんなさい

4

3 に答える 3

9

このソリューションは最初の 2 つの数字を取り、それぞれの数字は任意の数にすることができます

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();

于 2013-03-21T14:44:06.577 に答える
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);
于 2013-03-21T15:16:18.213 に答える
0

それらを解析する文字列の文字をループできます。例外が発生した場合、文字ではない場合は数字であり、この2つの数字を追加するリストと、これを制限するカウンターが必要です。

擬似コードに従ってください:

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
于 2013-03-21T14:48:36.233 に答える