如何在 INI 配置文件中设置布尔值?

Posted

技术标签:

【中文标题】如何在 INI 配置文件中设置布尔值?【英文标题】:How to set boolean values in an INI configuration file? 【发布时间】:2012-09-10 04:03:56 【问题描述】:

我见过多种在 INI 文件中设置布尔值的方法:

variable = true variable = 1 variable = on variable = yes

哪种方式是最规范、最常见和/或首选的方式?

【问题讨论】:

【参考方案1】:

没有 INI 文件的规范,但不管它值多少钱,我都会列出一些我所知道的语言的实现的行为。

Python 的内置 configparser 模块提供了一个 getboolean,其行为如下:

接受的值...是'1''yes''true''on',这导致此方法返回True'0''no''false',和'off',这会导致它返回False

另一方面,在 phpparse_init_file 中:

字符串值 "true""on""yes" 被转换为 TRUE"false""off""no""none" 被视为 FALSE。

同时,.NET 没有对 INI 解析的内置支持,但其最流行的 INI 解析库 ini-parser 不支持自动解析值并将它们全部作为字符串返回。它的 Getting Started 示例显示了使用 .NET 的 Boolean.Parse 解析布尔值,它将接受字符串 "true""false"(任何大小写),并在给出其他任何内容时抛出异常。

总而言之:INI 解析器的不同实现在这个问题上绝对没有一致性。

我会推荐:

如果您只打算使用单个解析器解析您的 INI,请检查该解析器的行为方式并设计您的 INI 以适应其特定实现。 如果您需要支持范围广泛的解析器(例如,语言互操作性),那么要么完全放弃 INI 作为一种格式,要么完全避免使用某些解析器理解的任何魔法布尔值,而是坚持使用10

【讨论】:

具有讽刺意味的是,我刚刚发现 Delphi 的实现期望 1/0 - 我有点惊讶 true/True/false/False 不起作用。 yes/no 也没有。似乎有问题,如果您希望用不同语言编写的应用程序共享相同的 INI 文件...【参考方案2】:

这取决于 ini 文件的解析器。 值始终是字符串。

true/false :在 C# 中,我可以将 true 和 false 字符串直接转换为 bool。等于可读性和易于转换。更少的代码。

0/1 :在转换为 bool 之前,我必须将字符串 0 和 1 转换为 int。较小的 ini 文件大小。可读性较差。更多代码。

yes/no 和 on/off 我必须使用 if/switch 语句。可读。更多代码。

我的首选方式是 true/false。 对象序列化为 true/false,您可以将 true/false 与 sql 位类型一起使用,即使它存储为 0/1。所以唯一的缺点是尺寸在大多数情况下可能很小。

【讨论】:

以上是关于如何在 INI 配置文件中设置布尔值?的主要内容,如果未能解决你的问题,请参考以下文章

php 上传文件大小控制配置文件中设置的

eclipse怎么创建配置文件

如何在 Spring 配置文件中设置 WebSSOProfileConsumerImpl

如何在 Nuxt 配置中设置 .env 文件路径?

如何在 mongodb 配置文件中设置授权?

如何在 SQL 中设置布尔值