【问题标题】:Replacing text with Open XML SDK用 Open XML SDK 替换文本
【发布时间】:2018-09-14 01:25:22
【问题描述】:

我有一个小程序,它通过获取用户输入并在模板中替换字符串来生成一些文档。我有一些变量,例如日期和创建文档的人的姓名。但是我有两个变量,纬度和经度,我无法在生成的文档中替换它们。在我使用的文档模板中,所有需要替换的字段都是这种格式:{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】:

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

    试试这个: 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

    【讨论】:

    • 这适用于 docx 文件吗?那是我要写入的文件。我正在接受用户输入并替换 docx 文件中所有出现的值。
    • 好吧,您需要阅读所有行并使用字符串替换。尝试读取文件并将输出发送给我们
    • 这不起作用。有什么原因我不能对纬度和经度使用与其他变量(如名称和日期)相同的正则表达式函数吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多