0
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# を使用してどのようにすればよいですか?

4

5 に答える 5

2

いくつの異なるバリアントについて話しているのですか?

常に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.

于 2013-08-01T11:35:21.857 に答える
2

したがって、正規表現を使用してそれを行うことができます

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;
}

しかし、この行はデータベース レコードのようですね。

于 2013-08-01T11:36:39.763 に答える
0

\d+ は整数の正規表現です。そう

resultString = Regex.Match(subjectString, @"\d+").Value;

その番号を文字列として提供します。Int32.Parse(resultString) は、番号を提供します。

于 2013-08-01T11:36:35.490 に答える
0

ずさんなコードで申し訳ありませんが、次のようなものです。

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);
于 2013-08-01T11:49:56.153 に答える
0

これは次に機能するはずです:

.*?OVDPCT (\d+)P.*
于 2013-08-01T11:36:01.530 に答える