我設計了一個多語言網站,並且數據庫中的一些值有一個標記,它將被替換爲它的語言值,刪除標記括號({ })或完全刪除。用一個值替換{tag}或完全刪除{any-tag}
有兩種情況:
刪除括號:
value {mm} >> value mm
完全刪除:
value {mm} >> value
而且{標籤}可以是任意長度,可包含 -
燦任何人幫助我與正則表達式?
我設計了一個多語言網站,並且數據庫中的一些值有一個標記,它將被替換爲它的語言值,刪除標記括號({ })或完全刪除。用一個值替換{tag}或完全刪除{any-tag}
有兩種情況:
刪除括號:
value {mm} >> value mm
完全刪除:
value {mm} >> value
而且{標籤}可以是任意長度,可包含 -
燦任何人幫助我與正則表達式?
以下是一些您可能會覺得有用的代碼。對於很多很多更多選項,請參見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);
@ cyclotis04:正則表達式對我來說是新的,我認爲它們不易理解。我之前訪問過這個網站,但我需要快速解決方案。這就是我在這裏問的原因。但感謝您的建議;) 另外stackoverflow就像一個檔案給我。所以,如果我將來需要同樣的東西,在這裏我首先看:) – 2010-05-27 16:31:42
@HananGursoy:是的,關於它們一定沒有規律。如果您發現我提供的解決方案中的一個不能滿足您的要求,請告訴我出了什麼問題,我可以嘗試用更具體的正則表達式來幫助您。 =] – dlras2 2010-05-27 16:34:28
@Hasan:我也可以推薦http://msdn.microsoft.com/en-us/library/az24scfc.aspx – Joren 2010-05-27 16:35:16
的.Net已經p使用String.Format提供類似的功能。爲去掉括號
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
兩個缺點這種方法。
不錯,但不完全是我所需要的。我需要知道要用標籤替換什麼。例如有{power-source}這樣的標籤。我無法用其語言標籤替換所有的零。它也不是用戶友好的。 – 2010-05-27 17:04:35
啊,是的,這對用戶輸入的東西不好。疑難雜症。 – Greg 2010-05-27 18:13:34
這裏有問題嗎?我不知道你是否想要預處理頁面,關於如何使用資源文件進行國際化的建議或什麼。 – 48klocs 2010-05-27 16:05:51
我只需要使用正則表達式來替換mm或完全刪除{mm} – 2010-05-27 16:11:53
要添加到@ 48klocs所說的內容,ASP.NET已經提供了處理多種語言元素的方法,前提是您的網站應該迎合不同的文化和語言。它會比一堆if/else語句更清晰並從數據庫中替換值。如果您有興趣對ASP.NET *全球化*和*本地化*進行一些研究。這個過程也可以被稱爲*國際化*。 – 2010-05-27 17:17:59