在PowerShell中有没有一种简单的方法来格式化数字和其他语言环境?我目前正在编写一些函数,以便为我减轻SVG生成的负担,而SVG使用 .
作为十进制分隔符,而当将浮点数转换为字符串时,PowerShell会遵循我的区域设置(de-DE
)。
是否有一种简单的方法来为函数或其他设置另一个语言环境,而不必坚持使用当前的语言环境?
.ToString((New-Object Globalization.CultureInfo ""))
每个double
变量之后?
注意:这是关于用于格式化的区域设置,而不是格式字符串。
(副问题:在这种情况下,我应该使用不变文化还是en-US
?)
预计时间到达:好吧,我在尝试以下内容:
function New-SvgWave([int]$HalfWaves, [double]$Amplitude, [switch]$Upwards) {
"<path d='M0,0q0.5,{0} 1,0{1}v1q-0.5,{2} -1,0{3}z'/>" -f (
$(if ($Upwards) {-$Amplitude} else {$Amplitude}),
("t1,0" * ($HalfWaves - 1)),
$(if ($Upwards -xor ($HalfWaves % 2 -eq 0)) {-$Amplitude} else {$Amplitude}),
("t-1,0" * ($HalfWaves - 1))
)
}
我经常写的一些东西需要自动化处理,双精度值需要使用小数点而不是逗号(我的地区使用逗号)。
ETA2: 非常有趣的提示:
PS Home:> $d=1.23
PS Home:> $d
1,23
PS Home:> "$d"
1.23
将变量放入字符串中后,设置的语言环境似乎不起作用。
[Threading.Thread]::CurrentThread.CurrentUICulture = [Globalization.CultureInfo]::InvariantCulture
不起作用。 - stej[Threading.Thread]::CurrentThread.CurrentUICulture
确定_UI元素_的显示语言,而不是数字格式;相比之下,是[Threading.Thread]::CurrentThread.CurrentCulture
确定数字格式;尝试(在单行上)[Threading.Thread]::CurrentThread.CurrentCulture = 'de-DE'; 1.2
。 - mklement0