2010-05-27 59 views
1

我設計了一個多語言網站,並且數據庫中的一些值有一個標記,它將被替換爲它的語言值,刪除標記括號({ })或完全刪除。用一個值替換{tag}或完全刪除{any-tag}

有兩種情況:

刪除括號:

value {mm} >> value mm 

完全刪除:

value {mm} >> value 

而且{標籤}可以是任意長度,可包含 -

燦任何人幫助我與正則表達式?

+0

這裏有問題嗎?我不知道你是否想要預處理頁面,關於如何使用資源文件進行國際化的建議或什麼。 – 48klocs 2010-05-27 16:05:51

+0

我只需要使用正則表達式來替換mm或完全刪除{mm} – 2010-05-27 16:11:53

+0

要添加到@ 48klocs所說的內容,ASP.NET已經提供了處理多種語言元素的方法,前提是您的網站應該迎合不同的文化和語言。它會比一堆if/else語句更清晰並從數據庫中替換值。如果您有興趣對ASP.NET *全球化*和*本地化*進行一些研究。這個過程也可以被稱爲*國際化*。 – 2010-05-27 17:17:59

回答

2

以下是一些您可能會覺得有用的代碼。對於很多很多更多選項,請參見Regular-expressions.info

所有代碼Using System.Text.RegularExpressions;


刪除的{mm}(和mm)所有出現:

Regex.Replace(myString, "{mm}", String.Empty, RegexOptions.None); 

替換所有出現{mm}(只有mm)與mm

Regex.Replace(myString, "{mm}", "mm", RegexOptions.None); 

刪除的{any-characters}所有出現:

Regex.Replace(myString, @"{[\-a-z]*}", String.Empty, RegexOptions.IgnoreCase); 

any-characters替換的{any-characters}所有出現:

Regex.Replace(myString, @"{(?<tag>[\-a-z]*)}", "${tag}", RegexOptions.IgnoreCase); 
+0

@ cyclotis04:正則表達式對我來說是新的,我認爲它們不易理解。我之前訪問過這個網站,但我需要快速解決方案。這就是我在這裏問的原因。但感謝您的建議;) 另外stackoverflow就像一個檔案給我。所以,如果我將來需要同樣的東西,在這裏我首先看:) – 2010-05-27 16:31:42

+0

@HananGursoy:是的,關於它們一定沒有規律。如果您發現我提供的解決方案中的一個不能滿足您的要求,請告訴我出了什麼問題,我可以嘗試用更具體的正則表達式來幫助您。 =] – dlras2 2010-05-27 16:34:28

+1

@Hasan:我也可以推薦http://msdn.microsoft.com/en-us/library/az24scfc.aspx – Joren 2010-05-27 16:35:16

0

的.Net已經p使用String.Format提供類似的功能。爲去掉括號

  1. 無一例:

    string.Format("value {0}", ""); // returns "value " 
    string.Format("value {0}", "some value"); // returns "value some value" 
    

    你可以用這個方法做的更先進的東西,如指定格式的數字:

    string.Format(new CultureInfo("en-US"), "value {0:N}", 10000); // returns 10,000.00 
    string.Format(new CultureInfo("es-ES"), "value {0:N}", 10000); // returns 10.000,00 
    

    兩個缺點這種方法。

  2. 無法命名佔位符。你必須使用序號佔位符。 {0},{1} ... {n}。
+0

不錯,但不完全是我所需要的。我需要知道要用標籤替換什麼。例如有{power-source}這樣的標籤。我無法用其語言標籤替換所有的零。它也不是用戶友好的。 – 2010-05-27 17:04:35

+0

啊,是的,這對用戶輸入的東西不好。疑難雜症。 – Greg 2010-05-27 18:13:34