2010-06-05 86 views
0

C#WinForm應用程序非英語字母數字在文本文件中

編輯:看來有關於外語兼容性問題。
這是一個非問題。 我製作這個工具的紙牌遊戲主要是英文。將來我可能會支持其他語言,但所有內容仍將以英文名字爲主,這些英文名稱在遊戲的程序和規則中都是主鍵
我可以簡單地添加英文名稱的附加表格,然後是翻譯文本,所有內容都應該沒問題。

我的程序的一部分從包含名稱的文本文件中讀取輸入,並將其與另一個名稱列表進行比較。 有時這些名稱有非英文字母,特別是在輸入文件中帶有重音的「o」和拉丁語AE。

將此文本輸入與名稱進行比較時,這些非英文字符會導致問題。 我想找到一種方法來覆蓋這些字符與大多數情況下的英文對應,如「[重音o]」 - >「o」

我非常滿意編碼查找/替換表(我只希望有12-30個問題字符),但我遇到了一些障礙。

1)對查找/替換表(在「.cs」文件中)進行硬編碼會給我帶來錯誤,因爲編譯器不喜歡這些字符。
任何人都知道解決這個問題的技巧,還是我只需要創建一個查找/替換文本文件,這個文件將在這個過程之前被讀取?

2)識別字母令人沮喪,但如果找不到匹配項,我只會到達替換邏輯。 當非英文字符導致不匹配,或者它不在列表中時,會發生這種情況。
我並不太擔心每個不匹配字符串的逐字符檢查效率低下,因爲這是每三個月觸發一次的手動更新過程。 大概是單個字符的Bianary-code級別應該可行,但我還沒有得到這個工作。

3)上述[AE]字符經常使用,並且至少允許在程序中使用此字符將會很好,因爲我不打算像其他字符一樣替換它。 我已經將[AE]字符加載到我的數據庫中,沒有任何問題,並且使用「Ae」,「AE」和「[AE]」進行搜索在SQL級別上沒有問題,所以我很好功能。
這只是搜索其他非英文字符不太直觀。

所以這是我的問題,這實際上比任何嚴重的問題更令人討厭。不過,任何幫助或建議將不勝感激。

回答

0

您確定這些名稱不會有區別嗎?你確定要把「è」,「é」,「ê」和「ë」全部表示爲同一個意思嗎?

特別是在「外國」名稱中,具有不同變音符號的字符可能會有所不同。畢竟,對於那些名字的人來說,這些人物並不是外來的。

+0

這些名字來自紙牌遊戲,即使沒有口音,名字也是唯一的。 那麼不用擔心 – 2010-06-05 01:29:29

+0

那麼爲什麼名稱拼寫錯了?這沒有什麼意義。也許你只需要在紙牌遊戲中進行更好的數據驗證,不要將垃圾輸出到文件中。 – 2010-06-05 01:38:52

+0

請僅僅關注問題,而不是問題的原因。 名稱不會拼寫錯誤,我不是製作遊戲的人;我只是支持它的一個家釀實用程序。 http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=122075 – 2010-06-05 02:00:37