2011-07-12 3 views
1

文字列が次の形式であるかどうかを確認する必要があります {x:y}または{x、y、...、z} x、y、z整数または複素数のいずれかです。 私はreg-exと通訳が必要だと思っていました。 誰もこれについてどうやって行くのか知っていますか? これを行うライブラリへの提案も深く感謝します。整数/倍精度入力を解釈するRegExまたはインタプリタ

第2ステップでは、candが次のような式を解釈するインタプリタを使用します。 0.5 * {0.4,0.6,0.7} - > {0.2,0.3,0.35}。最適なアプローチは、インタプリタが使用できる文法を定義することであることがわかります。

おかげで、 B

+1

私たちはどのような二重表記法を使用していますか? 1.2のみ、あるいは1.2E-10のようなものがある –

+0

はい、1.2種類だけがうまくいくでしょう。 – Bogdan

答えて

2

101の異なるダブルフォーマットがあり、Double.TryParse()が.netフレームワークに組み込まれているとすれば、

"x、y、z"の値を含む文字列の配列を取得するために正規表現または単にstring.splitを使用し、各値にDouble.TryParseを呼び出します。

2つの可能な形式があるので、最初に入力文字列に ":"が含まれているかどうかを確認してから、コードを分かりやすくしてコードを分かりやすくします。

+0

これはいいアイデアです、ありがとう! .net組み込み関数を可能な限り活用したい。私はすでにこれを行うライブラリがオープンソースとして存在するかどうか疑問に思っています。 – Bogdan

0

私は自分自身を正規表現で素晴らしいではありませんが、私はそれらを得ることの私のソースのためにこれを使用して行います。http://www.regexlib.com/を作成できるように、また、そのサイト上のチートシートや正規表現テスターを含みあなた自身がかなり簡単です。

希望すると便利です。

0

まずオプション

\{[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?\} 

セカンド

\{[0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+\} 

使用

var text = "{1.4,65,2.56}"; 
Regex regex = new Regex("\{[0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+\}"); 
if(regex.IsMatch(text)) 
{ 
    //string matches your criteria 
} 

一度に両方のタイプをチェックしたい場合に正規表現を変更します。

\{([0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?)|([0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+)\} 
関連する問題