Получить строку до / после String.indexof в c # - PullRequest
2 голосов
/ 30 января 2012

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

Приложения уровня данных могут использоваться для работы с существующими базами данных или для реализации новых проектов и выпусков.

Для начала рекомендуется создавать приложения уровня данных из существующих систем путем регистрации.каждая производственная база данных как приложение уровня данных.

Затем пользователи могут извлекать каждую базу данных для создания пакета DAC и отправлять пакеты группе разработчиков.

После этого разработчики используют Visual Studio для создания изменений на уровне данных, надлежащим образом их упаковывают и отправляют обновленные пакеты DAC в производство.

В свою очередь, администраторы баз данных могут обновлять производственные приложения, используя автоматические методы и инструменты, предоставляемые структурой приложений уровня данных.

Мне нужно извлечь текст из «с существующими базами данных» в пункте 1 в «каждую базу данных для производства» в пункте 2.

Как я могу получить этот результат в c # сследующие входы:

start paragraph : p1

Start character index : 43
/* index of w in 'with' */

Finish paragraph : p2

Finish character index : 47
/* index of e in 'produce' */

Ответы [ 2 ]

1 голос
/ 30 января 2012
int i = text.IndexOf("with existing databases");
int i2 = text.IndexOf("each database to produce");
int l = "each database to produce".Length;
string substring = text.Substring(i, i2 - i + l);
0 голосов
/ 30 января 2012

Вам нужно сохранить разделение абзацев, или вам просто нужен текст?Если абзацы не имеют значения, я загружаю этот фрагмент XML в объект XmlDocument, объединяю тексты в одну строку, а затем просто использую обычные манипуляции со строками для извлечения.

 var snippet = //your text here.
 var rawXml = "<text>" + snippet + "</text>"; // Wrap to make valid XML.
 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.LoadXml(rawXml);
 var mergedText = xmlDoc.InnerText;
 int start = mergedText.IndexOf(startMarker);
 int end = mergedText.IndexOf(endMarker) - start;
 mergedText.Substring(start, end);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...