【问题标题】:C# - Manipulate a text file programmaticallyC# - 以编程方式操作文本文件
【发布时间】:2019-04-20 11:39:07
【问题描述】:

我正在编写一个生成结构化文本文件的后端 API。根据用户输入,某些字符串通过插值填充

// actual string literal
string message = $@"Version {version} of Markdown Monster is now available.

Released on: {releaseDate:MMM dd, yyyy} 
{newStuff}
";

https://weblog.west-wind.com/posts/2016/Dec/27/Back-to-Basics-String-Interpolation-in-C.

我创建了一个 100 LOC 的文本文件,用我传递的 JSON 值填充所需的内容。

有时只需要文本文件的“部分”。如果需要,如何对要生成的文本部分进行标记和赋值?有很多可能的排列,大约 30 个不同的文本文件将由模板生成。

因此,想象一个 XML 文件,并在您的脑海中将其分解为 30 个单独的部分。通过任意用户输入以编程方式将一些片段按某种顺序排列。

//piece A
<?xml version = "1.0" encoding = "utf-8"?>

<!-- planes.xsd
 A simple schema for planes.xml
 -->
//piece b
<xsd:element name = "planes">
    <xsd:complexType>
        <xsd:all>
            <xsd:element name = "make"
                         type = "xsd:string"
                         minOccurs = "1" 
                         maxOccurs = "unbounded" />
        </xsd:all>
    </xsd:complexType>
 </xsd:element>
</xsd:schema>

//piece C
lorem ipsosume....

格式和缩进也必须保留。

【问题讨论】:

  • 我不明白你所说的“sections”、“tokenize”等是什么意思。你能举个例子吗?
  • 将一些文本放在一个块中 &lt;?xml version = "1.0" encoding = "utf-8"?&gt; &lt;!-- xslplane.1.xml --&gt; &lt;?xml-stylesheet type = "text/xsl" href = "xslplane.1.xsl" ?&gt; &lt;plane&gt; &lt;year&gt; 1977 &lt;/year&gt; &lt;make&gt; Cessna &lt;/make&gt; &lt;model&gt; Skyhawk &lt;/model&gt; &lt;color&gt; Light blue and white &lt;/color&gt; &lt;/plane&gt; 如果用户触发了文本出现在可交付成果上的标志。上面的代码是“block A”,所以如果我有三十个左右的标志,“block A”可能会出现,但有时会出现“block B”或“C”以某种顺序出现。希望可以清除它。@klausGutter
  • 对不起,我没有更清楚
  • @KlausGütter 编辑的 OP 希望能清除它

标签: c# .net-core


【解决方案1】:

您可以使用 razor - 它是一个文本模板引擎,旨在执行此类操作。这个问题(和答案)有使用它的信息:Using Razor outside of MVC in .NET Core

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2023-03-11
    • 2019-02-12
    • 2011-09-26
    相关资源
    最近更新 更多