Нужна помощь в манипулировании строкой в ​​C#?

У меня есть очень большая строка, которую я пытаюсь преобразовать из старого стандарта в стандарт marc21 xml.

Следующая строка кода:

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, как показано выше.

Первоначально элемент Leader выглядит так:

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

Любая помощь с благодарностью.

2 ответа

Решение

Используйте Regex:

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)  

Может я просто не правильно тебя понимаю, но почему бы не бежать

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

после вашей первой конверсии работа для вас?

Другие вопросы по тегам