GUIコントロールのキャプションがあり、それを単純なテキスト文字列に変換したいと思います。具体的には、アクセラレータのメタ文字を削除したいと思います。
例(例ではWinFormsを想定しています):
- メタ文字の単一の出現を取り除きます:
&YesになりますYes - ダブルオカレンスをシングルに変換:
Income && ExpenseになりますIncome & Expense
私のコードは、Windowsフォーム構文(アクセラレータのメタ文字がどこにあるか)を扱っているのか、&WPF(それがどこにあるのか)を扱っているのかを認識します_。ただし、これはバックエンドコードに含まれているため、WinFormsまたはWPFライブラリ関数に依存したくありません。コア(非GUI)BCLアセンブリを使用してこれを行う必要があります。(そしてその時点で、WinFormsで機能するものはすべて、WPF用に変更するのは簡単だと思います。)
これを行うにはいくつかの方法が考えられますが、どれが最も簡単かは明確ではありません。
この「シングルの場合はメタ文字を削除し、ダブルの場合はデダブル」を実装する最も簡単な方法は何ですか?
更新: WinFormsとWPFはどちらも基本的に同じように処理されると思っていましたが、そうではないことがわかりました。WinFormsは、文字列の最後にある1つのメタ文字を削除します(Foo&になりますFoo)が、WPFは削除しません(Foo_残りますFoo_)。両方に対応する回答のボーナスポイント。