2011-02-24 102 views
1

Let's說從來就得到了下面的XML字符串:

<Item Name=\"$Resources:myresource,somestring;\"</Item> 

現在我想挑出$資源標籤的所有出現在它(可以有任何數量的他們)。

我實際上不想用相應的值替換這些resx字符串,但是我已經得到了該代碼。

「問題」是,是應該得到這些值我的代碼要求我通過在資源文件的名稱(例如:$資源之後的部分。在本例中是myresource)和實際的資源對象(例如somestring)。

現在我一直在用正則表達式來實現這個功能,我真正想要的是將這兩個值放到兩個不同的組中(因爲有時「資源文件」將是默認的,例如它可以也看起來像$資源:somestring)。

任何人都知道如何做到這一點,或者我可以使用.NET中的某些東西來爲我做這件事,例如,給我一個屬性的類名(我認爲它是資源文件的適當名稱),另一個屬性中的資源對象?

回答

3

正則表達式其實很簡單:

(\$Resources\:(?<name>[^,;]+),(?<content>[^;]+);)|(\$Resources\:(?<content>[^;]+);) 

對於下面的字符串,它將返回3個結果,其中兩個結果有團體namecontent和一個結果只有組content
樣本數據:

<Item Name=\"$Resources:somedefaultstring;$Resources:myresource,somestring;$Resources:myresource2,somestring2;$Resources:somedefaultstring;\"</Item> 

UPDATE:
根據註釋固定。

+0

超...完美的作品! – 2011-02-24 12:23:20

+0

雖然有一個問題,但只有當第一個「匹配」與資源文件(例如$ Resources:resx,somevalue;)匹配時纔有效。如果第一場比賽只是$ Resources:somevalue;它失敗。我想它與|有關在正則表達式...任何想法? – 2011-02-24 16:36:08

+1

我修好了,看我的編輯。 – 2011-02-24 16:39:58

相關問題