2013-07-13 4 views
0

Я знаю, я знаю, я, наверное, смутил тебя! :)Как вставить строку ПОСЛЕ конкретной строки внутри строки?

У меня есть это:

namespace WebPageHeaderFixer 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string folderToSearch = @"C:\Test\"; 

      foreach (string file in Directory.GetFiles(folderToSearch)) 
      { 
       string fileString = File.ReadAllText(file); 

       //Here, I want to insert string X into "fileString" AFTER string Y. 
      } 
     } 
    } 
} 

Я хочу, чтобы добавить строку X в переменную fileString после последнего регистр TagPrefix:

<%@ Register TagPrefix="ucCal" TagName="popupCalendar" Src="../UserControls/popupCalendar.ascx" %> 
<%@ Register TagPrefix="ucRes" TagName="Search" Src="../UserControls/SearchControl.ascx" %> 
<%@ Register TagPrefix="abc" TagName="header" Src="../Header.ascx" %> 
//I want to insert X here 
other code 
some more code 
some ugly code 

Как я могу идти об этом?

* Обратите внимание: последний тег Register может отличаться от файлов.

+0

Выполняет ли какой-либо из ваших тегов '<% @ Register ...%>' несколько строк или каждый из них содержится в собственной строке? –

ответ

1

Используя метод вставки и IndexOf метод и LastIndexOf метод может быть сделано, как это:

int LastRegister = fileString.LastIndexOf("Register TagPrefix"); 
int InsertPosition = fileString.IndexOf('>', LastRegister) + 2; 
fileString = fileString.Insert(InsertPosition, "String x"); 

Это устанавливает позицию вставки 2 символа мимо индекса «>» следующее последнего вхождения «Регистрация TagPrefix », который должен положить позицию вставки в начале следующей строки. Если строка имеет 2 символа для конца строки, вам может потребоваться смещать позицию вставки еще на один.

1

Можете ли вы прочитать файл строки за строкой, а не одну строку? Затем вы можете циклически перебирать строки, чтобы найти последнее вхождение интересующей вас строки, затем вы можете написать строки обратно в файл, вставив строку после нее.

Смежные вопросы