/// <summary> /// Obtiene una nota del contenido del concepto desde el indice de apertura e indice de termino del contenido /// </summary> /// <param name="indexApertura">Indice de apertura del concepto en el documento</param> /// <param name="indexCierre">Indice de cierre del siguiente concepto en el documento</param> /// <param name="contenido">Cadena del contenido de todo el documento</param> /// <returns>Cadena html con la nota del concepto</returns> private string ObtenerContenidoNota(int indexApertura, int indexCierre, string contenido) { string contenidoNota = ""; if (indexApertura < indexCierre) { var seccion = contenido.Substring(indexApertura, indexCierre - indexApertura); //Desde el inicio de la cadena, buscar la primera apertura de elemento //var primerElemento = Regex.Match(seccion, @"\<[a-z|A-Z]{1,}"); var primerElemento = Regex.Match(seccion, @"\<p\s"); int indiceRealInicio = 0; if (primerElemento.Success) { indiceRealInicio = primerElemento.Index; } if (seccion.LastIndexOf("[Formato:") > 0 || seccion.LastIndexOf("[Contexto:") > 0) { var indiceSeparadorSeccion = seccion.LastIndexOf("[Formato:") > 0 ? seccion.LastIndexOf("[Formato:") : seccion.LastIndexOf("[Contexto:"); seccion = seccion.Substring(0, indiceSeparadorSeccion); } int indiceRealFin = seccion.LastIndexOf("</", StringComparison.Ordinal); if (indiceRealFin > 0) { int indiceTmpFin = seccion.IndexOf('>', indiceRealFin); if (indiceTmpFin > 0) { indiceRealFin = indiceTmpFin + 1; } } if (indiceRealFin < indiceRealInicio) { contenidoNota = String.Empty; } else { contenidoNota = seccion.Substring(indiceRealInicio, indiceRealFin - indiceRealInicio); } } contenidoNota = eliminarContenidoNotaNuevoFormato(contenidoNota); contenidoNota = WordUtil.EliminarSaltosSeccion(contenidoNota); return(contenidoNota); }