Buongiorno a tutti, ho un problema con un file word, devo eliminare del testo tra 2 tag, ed i tag stessi, ma non riesco a capire dove sto sbagliando, sto provando con delle espressioni regolari, ma non so se sia il metodo migliore. Ah nell'esercizio devo utilizzare solo openxml.
Questa è la parte del testo che devo eliminare, ovviamente prima e dopo ne è presente dell'altro.
[?USA_DETTAGLIO_TARIFFE_G]
DETTAGLI TARIFFA GIORNALIERA:
[?DETTAGLIO_TARIFFA_G]
Tariffa: [CODICE_TARIFFA] - [DESCRIZIONE_TARIFFA]
Netto: [IMPONIBILE] - Imposta: [IMPOSTA] - Totale: [TOTALE] - IVA: [IVA]
[/?DETTAGLIO_TARIFFA_G]
[/?USA_DETTAGLIO_TARIFFE_G]
Devo eliminare tutto quello presente all'interno dei tag [?USA_DETTAGLIO_TARIFFE_G] e [/?USA_DETTAGLIO_TARIFFE_G] compresi questi ultimi.
Per ora ho scritto questo.
public static void UpdateTAG()
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open("D:\\Word\\testOriginale.docx", true))
{
string docText = null;
using (StreamReader reader = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
docText = reader.ReadToEnd();
}
//I alternativa
//string startTag = "[?USA_DETTAGLIO_TARIFFE_G]";
//string endTag = "[/?USA_DETTAGLIO_TARIFFE_G]";
//string textToRemove = docText.Substring(docText.IndexOf(startTag) + startTag.Length, docText.IndexOf(endTag)+ endTag.Length);
//docText = docText.Replace(textToRemove, "");
//II alternativa
//Regex expression = new Regex("(\\[?USA_DETTAGLIO_TARIFFE_G\\])(.*?)(\\[/?USA_DETTAGLIO_TARIFFE_G\\])");
//docText = expression.Replace(docText, "");
//III alternativa
//docText = Regex.Replace(docText,@"(?s)(?is)(?<=[?USA_DETTAGLIO_TARIFFE_G])(.*?)(?=[/?USA_DETTAGLIO_TARIFFE_G])", "");
using (StreamWriter writer = new StreamWriter(
wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
writer.Write(docText);
}
wordDoc.Save();
Ovviamente nessuna delle 3 alternative funziona