我有一個GUI控件的標題,我想將它轉換爲一個簡單的文本字符串。具體來說,我想刪除加速器元字符。如何從字符串中刪除加速字符?
例如(實施例假設的WinForms):
- 剝去元字符的單次出現:
&Yes
變得Yes
- 轉換雙出現單:
Income && Expense
變得Income & Expense
我的代碼將知道它是否處理Windows窗體語法(其中加速器元字符是&
)或WPF(它是_
)。但是,這是後端代碼,所以我不想依賴任何WinForms或WPF庫函數 - 我需要使用核心(非GUI)BCL程序集來執行此操作。 (在這一點上,我認爲任何適用於WinForms的東西對於WPF都是微不足道的。)
我可以想到幾種方法來做到這一點,但不清楚哪一種最簡單。
什麼是最簡單的方法來實現這個「刪除元字符如果單一,如果加倍去除雙倍」?
更新:我假設WinForms和WPF都處理這些基本相同,但事實證明他們沒有。 WinForms將刪除字符串末尾的單獨元字符(Foo&
變爲Foo
),但WPF不會(Foo_
仍爲Foo_
)。獎勵積分爲解決這兩個問題的答案。
查看更新。這是不正確的寫作(WinForms會剝去一個尾部'&'),但如果您(1)將每個'&'更改爲'_'(在這種情況下它匹配WPF行爲),則會變得正確。或(2)將'「&(。)」'改爲'「&(。?)」(在這種情況下,它與WinForms行爲相匹配)。 – 2010-09-14 04:14:23
是的,考慮到行爲上的差異,它可能是兩種不同的方法中最好的。但它看起來像這個釘子非常有效。 – 2010-09-15 00:32:46