用Open XML SDK替换文本

问题描述 投票:0回答:1

我有一个小程序,通过用户输入和写入替换模板中的字符串来生成一些文档。我有一些变量,比如日期和创建文档的人的姓名。但我有两个变量,纬度和经度,我不能在生成的文档中替换。在我使用的文档模板中,需要替换的所有字段都具有以下格式:{field}。所以替换名称看起来像:{name}。除了经度和纬度之外,我所有的六个变量都有效。这些数字是网格坐标,所以它们写成12.3456,-98.7654。我将它们定义为一个字符串(以及我的所有其他变量)。我认为我的正则表达不正确/坏了。

例如,经度函数如下所示:

 Console.WriteLine("Enter Longitude");
 longitude = Console.ReadLine();
 Console.WriteLine($"Longitude: {longitude}");

替换文档中的文本的正则表达式如下所示:

Regex regexLongitude = new Regex("{longitude}");
docText = regexLongitude.Replace(docText, longitude);

纬度函数是相同的,只需用longitude替换latitude。实际上,我的所有变量都在这些相同的函数中定义和使用。

这个问题是一致和可重复的。我已经尝试重命名变量,将变量重新定义为浮点数(我认为我无论如何都不正确),甚至只使用一个没有小数点的随机数字串。即使我使用abc等文本作为坐标,它们也不会被替换。正则表达式中的某些东西只是跳过这个。过去几天我一直在做研究,现在我不知所措。

c# docx openxml-sdk
1个回答
0
投票

你的正则表达式是不正确的。我不确定我是否明白你想要做什么,但我认为你需要的只是将一个词替换为另一个词,对吗?你需要的只是

试试这个:var text = "{field} bla bla bla bla {field}"; var coordinate = "123.002-123-000"; var replacedText = text.Replace("{field} ",coordinate); Console.WriteLine(replacedText);

你的答案是:123.002-123-000 bla bla bla bla 123.002-123-000

© www.soinside.com 2019 - 2024. All rights reserved.