私は次のような文字列を持っています
AS_!SD 2453iur ks@d9304-52kasd
文字列の 2 つのフリスト番号を取得する必要があります。
その場合は次のようになります
2453
。9304
分割を試みる文字列に区切り文字がなく、数字と文字列の長さが可変です。WPF の C# フレームワーク 4.0 で作業しています。
助けてくれてありがとう、そして私の悪い英語でごめんなさい
このソリューションは最初の 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();
または、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);
それらを解析する文字列の文字をループできます。例外が発生した場合、文字ではない場合は数字であり、この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