1

次の場合に変換を機能させるための最良の方法は何ですか。

string a = "10.0123";
string b = "10,0123";

また、cultureinfoはスウェーデン語または英語のいずれかであり、両方で機能する必要があります。

私は試した:

double aSwe = Convert.ToDouble(a, CultureInfo.GetCultureInfo("sv-SE"));
double bSwe = Convert.ToDouble(b, CultureInfo.GetCultureInfo("sv-SE"));

double aInv = Convert.ToDouble(a, CultureInfo.InvariantCulture);
double bInv = Convert.ToDouble(b, CultureInfo.InvariantCulture);

以来 '。' はSweでは有効な区切り文字ではなく、'、'はEngでは無効です。同じコードを使用して両方で機能させる方法がわかりません。私が思いついた唯一の解決策は、変換する前にコンマまたはドットを置き換えることですが、より良い解決策があるはずだと感じていますか?

4

1 に答える 1

3

追加のコンテキストなしで両方で機能させようとするべきではありません

これは、"06/05/2010" を文化的な情報を含まない日付として解析しようとするようなものです: 5 月 6 日または 6 月 5 日を意味する可能性があります。

同様に、「1,234」は、1,000 を少し超える値か、1 を少し超える値のいずれかです。明確に解釈するには、文化情報を知る必要があります。

したがって、十分な情報がない状態で何かを解釈するという問題を解決しようとするのではなく、必要なすべての情報を取得する (または、テキスト データを常に 1 つの特定の形式にする方法を変更する) という問題に集中することをお勧めします。

于 2012-07-04T09:13:47.037 に答える