String str = "USD SBFARE 4067.71 OVDPCT 8P SBMARKUP 0A TPS 59486 CC 0P OTH 0A"
"8" (OVDPCT 8P)
この文字列から必要です。
番号は常に OVDPCT の後に続き、P で始まります。
この 8 は 10、12 など、任意の数を意味します。
c# を使用してどのようにすればよいですか?
いくつの異なるバリアントについて話しているのですか?
常にOVDPCT *P
ある場合、パターンは次のようになります。
.*OVDPCT (\d+)P.*
次のように使用できます。
Match match = Regex.Match(str,@".*OVDPCT (\d+)P.*");
int num = int.Parse(match.Groups[1].Value);
注: ここでは非常に大雑把に説明しています。match.Success
おそらくint.TryParse
.
したがって、正規表現を使用してそれを行うことができます
var match = System.Text.RegularExpressions.Regex.Match(str, "OVDPCT (?<Number>\\d+)P", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if(match.Success)
{
var number = match.Groups["Number"].Value;
}
しかし、この行はデータベース レコードのようですね。
\d+ は整数の正規表現です。そう
resultString = Regex.Match(subjectString, @"\d+").Value;
その番号を文字列として提供します。Int32.Parse(resultString) は、番号を提供します。
ずさんなコードで申し訳ありませんが、次のようなものです。
var str = "USD SBFARE 4067.71 OVDPCT 8P SBMARKUP 0A TPS 59486 CC 0P OTH 0A";
var strAsArray = str.Split(" ".ToArray(), StringSplitOptions.RemoveEmptyEntries);
var subject = strAsArray[4].Trim(); // assuming fifth element
var value = new Regex("^[0-9]+").Match(subject).Value;
Console.WriteLine("Found: ", value);
これは次に機能するはずです:
.*?OVDPCT (\d+)P.*