Я пытаюсь заменить каждое слово в документе Microsoft Word, которое заключено в пару скобок.Почему-то прогон XML время от времени отличается.
Это означает, что иногда оно фактически вводит в цикл целое слово с квадратными скобками, но иногда оно может содержать только первые квадратные скобки, а иногда - первую пару скобок, слово, но не вторую пару скобок.
Это приводит к тому, что некоторые слова никогда не заменяются.
Я пытался использовать решения из предыдущих потоков в stackoverflow без результата.Я также пытался определить, когда квадратные скобки разделяются, но это не сработало, поскольку это также могло случайно разбить слово где угодно.
Например, я пробовал решения из этой цепочки без какого-либо другого результата: Замените текст в документе Word, используя Open Xml
public IActionResult Get([FromBody] dynamic value)
{
JObject attributesAsJObject = value;
Dictionary<string, object> values = attributesAsJObject.ToObject<Dictionary<string, object>>();
string path = Directory.GetCurrentDirectory() + "/test.docx";
// Open a WordprocessingDocument for editing using the filepath.
using (WordprocessingDocument doc =
WordprocessingDocument.Open(path, true))
{
var body = doc.MainDocumentPart.Document.Body;
foreach (var text in body.Descendants<Text>())
{
foreach (dynamic key in values)
{
string thekey = "{{" + key.Key + "}}".ToString();
if (text.Text.Contains(thekey))
{
text.Text = text.Text.Replace(thekey, key.Value);
}
}
}
}
return Ok();
}
Используя эти решения, я ожидал, что переменная "text" из цикла foreach всегда будет целыми словами, но все равно будет разбивать ее случайным образом.