2013-03-21 107 views
1

我最近一直在學習很多關於本地化和資源文件(.resx)的使用。對於特定的代碼,我爲每個WinForm提供了.resx(和相關的本地化版本.de-DE.resx等),爲代碼提供了兩個代碼(一個用於對象字符串[列名等],另一個用於用戶消息[那些顯示在消息框等])。對於對象字符串,我沒有任何問題,但對於消息,我有以下問題...如何在資源(.resx)文件中處理字符串文字

將消息'搜索「SomeString」(23個點擊3個文件)',其中是消息開頭的選項卡空間。要創建這樣一個消息,我用這樣的代碼

String.Format("\tSearch \"{0}\" ({1} hits in {2} files)\n", 
       strSearchString, 
       nTotalHits, 
       nNumberOfFiles); 

問題是現在,當我包括在資源文件我在運行時獲取以下輸出

\tSearch \"SomeString\" (23 hits in 3 files)\n 

顯然它不處理字符串"\tSearch \"{0}\" ({1} hits in {2} files)\n"字符串文字作爲C#本身。我知道要在資源​​文件中創建新行,我必須使用Shift + 返回,但是您對tab等人做了什麼?請不要說複製到Word或記事本++,並添加選項卡,複製後或我會戳我自己的眼睛。

什麼是將包含在資源文件中的字符串文字轉換爲的最佳方法實際由C#正確解釋的字符串文字?

請注意,這種轉換隻會發生在消息中,所以我甚至願意考慮運行時轉換。

謝謝你的時間。

回答

4

恐怕你會在自己的眼中戳,因爲那是正好你必須要做的。我也因此而感到沮喪。

你可以包括標籤作爲一個單獨的項目,如:

String.Format("{0}Search \"{1}\" ({2} hits in {3} files)\n", 
      "\t", 
      strSearchString, 
      nTotalHits, 
      nNumberOfFiles); 

您也可以在數字鍵盤上鍵入Alt-012輸入標籤。

最後,在將字符串傳遞給string.Format()並在字符串資源中放入「\ t」之前,您可以通過執行string.Replace("\\t", "\t")來「逃避」選項卡。

這一切都有點不滿意壽! (我相信你自己已經想到了所有這些想法......)

+0

Daammmmn [Chris Tucker的聲音]!我曾想過做'String.Replace()'方法。但這是事態的事實是_amazing_。我想爲我的消息,我要'String.Replace()'。馬修再次感謝您的幫助。 – MoonKnight 2013-03-21 10:50:08

相關問題