2016-09-12 8 views
0

私は文字列を置き換えようとしていますが、幸運はありません。 私は自分のテーブルで "Ю"と "ю"を "yu"、 "Б"と "б"を "b"に置き換える必要があります。 私が働いていないようなコードを、持っている:regex.replace C#diacritics

case "LastRUEN": 
       if (csentry["LAST"].IsPresent) 
       { 
        string FIELD_RU = csentry["LAST"].Value; 
        string FIELD_EN; 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Аа]", "a"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Бб]", "b"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Вв]", "v"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Гг]", "h"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Ґґ]", "g"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Дд]", "d"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Ее]", "e"); 
        mventry["lastNameEN"].Value = FIELD_EN; 
} 
break; 

誰がトラブルシューティングにheplことはできますか? 私の場合には方法を使用するほうがよいでしょうか? ありがとう!

+2

それは発音区別記号( "アクセント")ではなく、あなたは明らかにキリル文字をラテン文字に翻字しようとしています。 – Mat

+0

なぜ正規表現が必要ですか?あなたは単に 'string.Replace()'を使用できませんか? – Natrium

+1

変更されていない 'FIELD_RU'に置き換えられます。つまり、 'FIELD_EN'は最後の置換のみを含みます。いずれにせよ、あなたが字翻詞を書いているので、おそらくcharでcharに行き、とにかく文字列置換をするのではなく、ある辞書に基づいて字面変換された文字列を作りたいと思うでしょう。 – Luaan

答えて

3

Replace呼び出しの結果が次の操作の入力になるため、これはうまくいくはずです。

case "LastRUEN": 
      if (csentry["LAST"].IsPresent) 
      { 
       string FIELD_RU = csentry["LAST"].Value; 
       string FIELD_EN; 
       FIELD_EN = Regex.Replace(FIELD_RU, "[Аа]", "a"); 
       FIELD_EN = Regex.Replace(FIELD_EN , "[Бб]", "b"); 
       FIELD_EN = Regex.Replace(FIELD_EN , "[Вв]", "v"); 
       FIELD_EN = Regex.Replace(FIELD_EN , "[Гг]", "h"); 
       FIELD_EN = Regex.Replace(FIELD_EN , "[Ґґ]", "g"); 
       FIELD_EN = Regex.Replace(FIELD_EN , "[Дд]", "d"); 
       FIELD_EN = Regex.Replace(FIELD_EN , "[Ее]", "e"); 
       mventry["lastNameEN"].Value = FIELD_EN; 
} 
break; 

もちろん、操作を別の方法に移す必要があります。

EDIT:Replace Multiple Characters in a Stringは、複数のコールを組み合わせることを意図しています。

+0

ありがとう、rboe、それは私の愚かな間違いだった。 – Alex

+0

問題ありません、どうぞ。 –

+0

そして、その答えがあなたを助けてくれたなら、答えとしてマークすることを忘れないでください。 –

関連する問題