我有一个 GUI 控件的标题,我想将它转换为一个简单的文本字符串。具体来说,我想删除加速器元字符。
例如(示例假设 WinForms):
- 去掉单个出现的元字符:
&Yes
变成Yes
- 将双次出现转换为单次:
Income && Expense
变为Income & Expense
我的代码将知道它是在处理 Windows 窗体语法(加速元字符在哪里&
)还是 WPF(它在哪里_
)。但是,这是在后端代码中,所以我不想依赖任何 WinForms 或 WPF 库函数——我需要使用核心(非 GUI)BCL 程序集来执行此操作。(在这一点上,我认为任何适用于 WinForms 的东西对于 WPF 的修改都是微不足道的。)
我可以想到几种方法来做到这一点,但不清楚哪种方法最简单。
实现这个“如果是单字符则删除元字符,如果加倍则删除元字符”的最简单方法是什么?
更新:我曾假设 WinForms 和 WPF 都处理这些基本相同,但事实证明他们没有。WinForms 将在字符串的末尾删除一个单独的元字符(Foo&
变成Foo
),但 WPF 不会(Foo_
保留Foo_
)。解决这两个问题的答案的奖励积分。