c# - 有没有一种简单的方法来解析 C# 中的结构化文本文件?

标签 c# file parsing

我正在尝试解析一个文本文件,但我觉得一定有更好的方法来做这件事。

文本文件由项目组成,项目可以包含键值对以及其他项目。我相信该文件只会深入到孙子项目(例如,项目中的项目,项目中的项目)。

目前我正在逐行遍历文件,并跟踪我所处的深度。然后,一旦我到达终止字符 ('}') 并且我处于 0 级,我就知道我已经捕获了整个父项。

由于我认为我没有很好地解释它,所以我的文件结构看起来与此类似。

parent_item {
key: value
key: value
child_item {
    key: value
    key: value
}
child_item {
    key: value
    key: value
    key: value
    grandchild_item {
        key: value
        key: value
    }
}
key: value
key: value
}
parent_item {
    key: value
    key: value
    child_item {
        key: value
        key: value
    }
}

每个项目可以有 0 到多个子项目,但我认为它不会超过 3 个级别(父 -> 子 -> 孙)。

是否有更简单的方法来解析它,或者我的工作方向是否正确?

最佳答案

您的文件看起来几乎像 JSON,只是复杂嵌套对象的属性名称之间没有冒号。但是,它的不同之处在于您将无法使用像 JSON.NET 这样的 JSON 解析器。

我建议像您一样手动解析它——但要使用堆栈和状态机。每次遇到打开的 curl { 时,您的状态机都应该压入堆栈,并在遇到关闭的 curl } 时从堆栈中弹出。

关于c# - 有没有一种简单的方法来解析 C# 中的结构化文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42513124/

相关文章:

c++ - 预处理器#if 语句的工具/解析器?

python - BeautifulSoup 在 XML block 内找不到标签

c# - Enum.TryParse 的非常基本的使用不起作用

c# - 杂项功能静态类的理想类名

c++ - 从 .txt 文件中提取行,然后将单词存储到单独的数组中 | C++

c - 如何将字符从数组复制到用户在 C 中创建的文件

c# - 需要在 C# 中为数字编写正则表达式

c# - IValueConverter 的最佳实践是什么?

java - 在 android 中访问 USB 大容量存储设备

c# - 如何从 char 值中检索 Enum?