2015-08-14 68 views
0

我試圖在第二個縮進代碼中插入一個縮進的代碼,使用第一個縮進作爲基礎。C#RegExp縮進和換行

我的意思是,第二個縮進必須從第一個末尾開始。

縮進我得到正確的工作,但它增加了一些不受歡迎的換行符,我需要避免。

這裏是代碼的例子,我不會發布實際的代碼,因爲字符串是動態構建的,有些我是從文本文件中獲取的。

所以我把它分開放在一起以便於理解。

STRING與

<div class="form-item"> 
    <div class="form-item-label inline" ><span></span></div> 
    <input type="text" value="" > 
</div> 

字符串替換WHERE替換

<div id="formFiltro" class="form-filtro"> 
    <fieldset> 
     <legend>Filtros</legend> 

     <-'REPLACE_HERE'-> 

    </fieldset> 
</div> 

期望的結果

<div id="formFiltro" class="form-filtro"> 
    <fieldset> 
     <legend>Filtros</legend> 

     <div class="form-item"> 
      <div class="form-item-label inline" ><span></span></div> 
      <input type="text" value="" > 
     </div> 

    </fieldset> 
</div> 

MY未遂

// newCode = string to replace with 
// code = string where replacing 

string pattern = "\r\n|\r|\n"; // Replace line breaks with "$1" to be used on the second replace 

newCode = Regex.Replace(newCode, pattern, @"$1"); 

pattern = @"([\s\t]*)(<-'REPLACE_HERE'->)"; //Copy default identation for new code while keeping "<-'REPLACE_HERE'->" on the original position 

code = Regex.Replace(codigo, pattern, String.Format(@"$1$2$1{0}", newCode)); 

我得到了什麼提前

<div id="formFiltro" class="form-filtro"> 
    <fieldset> 
     <legend>Filtros</legend> 

     <div class="form-item"> 

      <div class="form-item-label inline" ><span></span></div> 

      <input type="text" value="" > 

     </div> 

    </fieldset> 
</div> 

感謝。

+0

所以,你想我們修復你的正則表達式,但你不會發布你的正則表達式?大問! – Polyfun

回答

1

你需要做更多的C#ing,但正則表達式可以提供幫助。

首場比賽,在您的佔位符前面的字符

(.*?)<-'REPLACE_HERE'-> 

你的比賽將是在第1組

然後通過在前面它爲每一行

resultString = Regex.Replace(subjectString, "^(.*)$", "MatchedTextFromPrefiousRegex$1", RegexOptions.Multiline); 
處理替換文本

然後進行實際更換。