1

わかりましたので、WPF形式でプログラムを構築しています。ご存知のように、wpf の入力は通常stringです。最初にそれらをdoubleに変換するには、それらの文字列が適合するかどうかを検証してから、続行して変換する必要があります。問題は検証にあります。string.IsNullOrEmptyかどうかをチェックする検証の一部を実行しましたが、答えが完全に変換可能でないかどうかを検証することはできませんでした...いくつかの文字列のため、例を示しましょう完全に数値ではない場合でも、次のように受け入れる必要があります。

「sadasdaasd」 - 受け入れられません (明らかに)

"8945a4554" - 受け入れられません (真ん中に「a」があります)

"3519" - 承認

"12.55" - 承認

"-3/4" - 受け入れられ、値は (-3) を (4) で割った値として double に変換する必要があります。そのため、「/」が受け入れられ、文字列を 2 で分割してから、最初の部分/2 番目の部分として double に変換します。

私は一日中この検証を試みてきましたが、まだ成功していません。入力検証のために Web を検索しようとしましたが、double.TryParse(string, out double)を使用する必要があると言う人もいましたが、この関数は機能しません私が欲しかった「/」分割。だから私を助けてください!!!

4

1 に答える 1

1

正規表現を介して文字列を解析することから始めます (q: "-3*4" は -3 かける 4 として受け入れられますか?)。基本的に、次のような正規表現での一致を探しています (これは -3/4 で機能します。さらにテストして、乗算が許可されている場合は変更する必要があります)。 -?\d+[/]\d+

その一致が見つかった場合は、文字列を解析して、文字列string.Split('/')の配列を取得します。それらのそれぞれを TryParse して計算します。

一致しない場合は、TryParse を使用します (以前に推奨されていたように)。これは成功するか (例では 3519、12.55)、失敗します (例では sadasdaasd、8945a4554)。

注: string.Contains('/') を使用することもできますが、複数のスラッシュが含まれているかどうかを確認する必要があります (そのようなことが許可されている場合を除きます。その場合、その正規表現を再確認する必要があります)。 .

于 2013-10-28T20:59:39.400 に答える