0

この状況を処理するための正規表現を作成するのを手伝ってくれる人はいますか? 数値の表示形式の文字列があり、次の形式の Positive_Value_Format;Negative_Value_Format にすることができます。正と負の形式は、たとえば '#,##0.00;(#,##0.0000)' または '#,##0;(#,##0.0)' または '#,##0' です。 1 つの正の値はドットの後に 2 桁で表示し、別の正の値は桁なしで表示する必要があります。

したがって、この 3 つのケースを処理する正規表現を作成する必要があります。正の値と負の値の小数点以下の桁数は何ですか。

'#,##0.00;(#,##0.0000)' -> 2, 4
'#,##0;(#,##0.0)' -> 0, 1
'#,##0' -> 0

次の質問を見つけましたが、回答がないか、RegExp の代わりに解析文字列を使用しています -フォーマット文字列から小数点以下の桁数を決定する良い方法は何ですか? フォーマット文字列に基づいて小数点以下の桁数を識別します

4

1 に答える 1

0

これは、提供された3つの文字列すべてで機能します

        string pat = "#,##([0-9]([0-9.]*?|$))($|;[(]#,##[0-9]([0-9.]*?)[)])";
        Match m = Regex.Match(input, pat);

        int lengthA = m.Result("$2").Replace(".", "").Length;
        if (!String.IsNullOrWhiteSpace(m.Result("$4")))
        {
            int lengthB = m.Result("$4").Replace(".", "").Length;
        }
于 2012-12-17T15:22:20.533 に答える