2012-07-11 116 views
0

我有一個非常大的字符串,我試圖從舊標準轉換爲marc21 xml標準。需要一些幫助操縱C#中的字符串?

下面的代碼行:

temp1 = inputString.Replace("<marc:controlfield tag=\"LDR\">", "<marc:leader>"); 

產生如下:

<marc:leader>^^^^^nam^a22^^^^^3a^4500</marc:controlfield> 

的問題是很明顯的。

我對特定術語執行一攬子轉換並將其替換爲'marc:controlfield'。在我轉換過程結束時,我開始處理領導元素。我現在在哪裏。出的XML精明有知道:

</marc:controlfield> 

需求是:

</marc:leader> 

一旦做到這一點,我可以串井和有效性等我如何努力進行測試抓取一個領導者元素的右括號並用xml替換它,如上所示。

本來領袖元素的樣子:

<fixfield id="LDR">^^^^^nam^a22^^^^^3a^4500</fixfield> 

任何幫助是極大的讚賞。

回答

2

使用正則表達式:

strResult = Regex.Replace(inputString, 
          "<marc:controlfield tag=\"LDR\">([^<]*)</marc:controlfield>", 
          "<marc:leader>$1</marc:leader>"); 

解釋:

[^<]* 

means any character except: '<' 
(0 or more times, matching the most amount possible) 
+0

似乎Reg Regions是要走的路!將明天檢查出來,並會告訴你它是否有效。 – IbrarMumtaz 2012-07-11 19:04:23

+0

像魅力一樣工作 - ty – IbrarMumtaz 2012-07-12 08:44:22

+0

@IbrarMumtaz:tanx! – Ria 2012-07-12 08:45:41

0

也許我只是沒有正確理解你,但對你的第一次轉換下班後爲什麼不運行

temp1 = temp1 .Replace("</marc:controlfield>", "</marc:leader>"); 

+0

原因是在於它會改變其他controlfields結束標記。這不是我想要的。我只需要特別處理marc領導元素,我選擇最後一次! – IbrarMumtaz 2012-07-11 19:03:40