0

ASP.NET Web アプリケーションのローカライズを行っています。ユーザーがローカライズされた文字列「XXXX」を入力し、その文字列をローカライズされたリソース ファイルの値と比較しています。

例 :

 if ( txtCalender.Text == Resources.START_NOW)
 {
      //do something
 }

しかし、2 つの文字列 (ローカライズされた文字列) が等しい場合でも、それを行うと、false が返されます。すなわち。

txtCalender.Text ="இப்போது தொடங்க"
Resources.START_NOW="இப்போது தொடங்க"

これはタミル語にローカライズされています。

助けてください..

4

5 に答える 5

1

string.Equals値を取るオーバーロードの 1 つをStringComparison使用します。これにより、現在のカルチャを比較に使用できます。

if ( txtCalender.Text.Equals(Resources.START_NOW, StringComparison.CurrentCulture))
{
     //do something
}

または、大文字と小文字を区別しない比較が必要な場合:

if ( txtCalender.Text.Equals(Resources.START_NOW,
                             StringComparison.CurrentCultureIgnoreCase))
{
     //do something
}
于 2012-06-06T12:15:41.333 に答える
1

私は答えを見つけました、そしてそれはうまくいきます。これが解決策です。

Chrome ブラウザーから試したときには機能しませんでしたが、Firefox では機能します。実際に両方の文字列をchar配列に変換すると、

txtCalender.Text は 40 文字を返し、Resource.START_NOW は 46 文字を返しました。したがって、Normalize() メソッドを使用して文字列を正規化しようとしました

if(txtCalender.Text.Normalize() == Resources.START_NOW.Normalize())

正規化メソッドを入れていない場合、1 つの文字を 2 つの異なる文字として解釈していました。

それはうまくいきました。回答ありがとうございます。

于 2012-06-06T12:24:06.167 に答える
0

InvariantCulturein String.Equals(statis メソッド)と比較できます。

String.Equals("XXX", "XXX", StringComparison.InvariantCulture);

これが役立つかどうかはわかりませんが、他の人がコメントしてもらえますか? あなたの実際のエラーに遭遇したことはありません。

于 2012-06-06T12:16:59.080 に答える
0

おそらく使用する必要があります.Equals

if(txt.Calendar.Text.Equals(Resources.START_NOW))
{ //...

また、大文字と小文字を区別しない比較が目的の場合 (多くの場合) StringComparison.OrdinalIgnoreCase、呼び出しの 2 番目の引数として使用し.Equalsます。

これが機能しない場合は、行をブレークポイントして実際の値を確認することをお勧めしますがResources.START_NOW、この等価比較が失敗する唯一の理由は、2 つの文字列が実際に同じでない場合です。私の推測では、あなたの文化管理は適切に機能していません。

于 2012-06-06T12:17:21.470 に答える
0

String.Equalsまたはを使用しString.Compareます。

これら 2 つの間には、いくつかのパフォーマンスの違いがあります。String.Compare は静的メソッドであり、String.Equals はインスタンス メソッドであるため、String.Compare は String.Equal より高速です。

String.Equal はブール値を返します。String.Compare は、文字列が等しい場合は 0 を返しますが、異なる場合は、最初の文字列が 2 番目の文字列の前 (小さい) か後 (大きい) かに応じて、正または負の数値を返します。したがって、それらが同じかどうかを知る必要がある場合は String.Equals を使用し、等しいかどうかを判断する必要がある場合は String.Compare を使用します。

于 2012-06-06T12:21:59.567 に答える