gpt4 book ai didi

Powershell ToString() 行为 - 在 ForEach-Object {$_.ToString ('test_0' )} 期间替换字符串中的 0

转载 作者:行者123 更新时间:2023-12-02 15:49:57 25 4
gpt4 key购买 nike

我在使用 ForEach-ObjectToString 时遇到了一些我没有预料到的 Powershell 行为。数字被自动替换,我无法完全理解仅从输出中替换的规则。

这是一个简单的小例子:

PS C:\Users\Telefonmann> 1..3 | ForEach-Object {$_.ToString('test_0_1')}
test_1_1
test_2_1
test_3_1

PS C:\Users\Telefonmann> 1..3 | ForEach-Object {$_.ToString('test_0_0')}
test_0_1
test_0_2
test_0_3

PS C:\Users\Telefonmann> 1..3 | ForEach-Object {$_.ToString("test_0$_\_0")}
test_01_1
test_02_2
test_03_3

PS C:\Users\Telefonmann> 1..3 | ForEach-Object {$_.ToString("test_0$_\_$_")}
test_11_1
test_22_2
test_33_3

在第一个示例中,0 被替换,在第二个示例中,仅最后一个 0 被替换,在第三个示例中,占位符和 0 被替换,在最后一个示例中,0 和占位符被替换。Powershell 是否只看到一个带有 0 的字符串,然后假设任何字符串中的最后一个 0 应该是一个计数器?

这种行为的术语是什么/是否有相关文档?如何禁用它?

最佳答案

这不是 Powershell 做的。 .ToString 是一个 .net 方法。

您可以通过不使用用于格式化的参数来“禁用它”。

ToString(IFormatProvider)

Converts the numeric value of this instanceto its equivalent string representation using the specifiedculture-specific format information.

您正在使用 IformatProvider .net 接口(interface)将整数格式化为字符串,该接口(interface)负责您所看到的行为。

要在您的字符串中应用修改,只需执行以下操作即可。

1..3 | ForEach-Object { ("test_0_$_") }

引用资料

.Net - Formatting types

Int32.ToString

关于Powershell ToString() 行为 - 在 ForEach-Object {$_.ToString ('test_0' )} 期间替换字符串中的 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72829744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com