¿Cómo puedo eliminar los caracteres del acelerador de una cadena?

Tengo un título para un control GUI y quiero convertirlo en una cadena de texto simple. Específicamente, quiero eliminar los metacaracteres del acelerador.

Por ejemplo (los ejemplos suponen WinForms):

Elimine las ocurrencias individuales del metacarácter:&Yes se convierteYesConvierta las ocurrencias dobles a simples:Income && Expense se convierteIncome & Expense

Mi código sabrá si se trata de la sintaxis de Windows Forms (donde el metacarácter del acelerador es&) o WPF (donde es_) Sin embargo, esto está en el código de fondo, por lo que no quiero depender de ninguna función de biblioteca WinForms o WPF. Necesito hacer esto usando los ensamblados BCL centrales (no GUI). (Y en ese momento, me imagino que cualquier cosa que funcione para WinForms sería trivial de modificar para WPF).

Se me ocurren varias formas de hacer esto, pero no está claro cuál es la más simple.

Cual es elmanera más simple implementar este "eliminar metacaracteres si es simple, desdoblar si se duplica"?

Actualizar: Asumí que WinForms y WPF manejaron estos básicamente lo mismo, pero resulta que no lo hacen. WinForms eliminará un metacarácter solitario al final de la cadena (Foo& se convierteFoo), pero WPF no lo hará (Foo_ permaneceFoo_) Puntos de bonificación por una respuesta que aborde ambas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta