Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell String.Trim()不删除字符串中的字符_Powershell - Fatal编程技术网

Powershell String.Trim()不删除字符串中的字符

Powershell String.Trim()不删除字符串中的字符,powershell,Powershell,我需要创建一个双字符串,使用String.Trim删除句号,但它不会删除句号。我想也有一种方法可以用数字来做,但我想用字符串来做。有没有理由它不会删除它?代码的输出是5.5 $MyDouble = 5.5 [String]$MyDouble2 = $MyDouble $MyDouble2.Trim(".") $MyDouble2 那么,为什么它不修剪最后一个或第一个字符呢?不会的,你可能需要的是: $MyDouble = 5.5 [String]$MyDouble2 = $MyDoubl

我需要创建一个双字符串,使用String.Trim删除句号,但它不会删除句号。我想也有一种方法可以用数字来做,但我想用字符串来做。有没有理由它不会删除它?代码的输出是5.5

$MyDouble = 5.5

[String]$MyDouble2 = $MyDouble

$MyDouble2.Trim(".")

$MyDouble2

那么,为什么它不修剪最后一个或第一个字符呢?不会的,你可能需要的是:

$MyDouble = 5.5
[String]$MyDouble2 = $MyDouble
$MyDouble2.Split(".")[0]
仅从字符串的开头和结尾进行修剪,因此它在命令中无效,因为。仅在输入字符串中发生

如果你真的想删除的话。并保留小数点后的数字,使用-replace运算符:

$MyDouble2 -replace '\.' # -> '55'
注: *-replace将正则表达式作为搜索操作数,因此需要转义正则表达式元字符。as\。 *上面是$MyDouble2的缩写-替换“\”。因为替换字符串在本例中是空字符串,所以可以忽略它

如果您只想提取整数部分,请使用或调整传递给-replace的正则表达式,以匹配。穿过绳子的末端

$MyDouble2 -replace '\..*' # -> '5'
提及以下备选方案:

用于移除。仅限:用于执行文字子字符串替换注意如何执行。因此,不需要像-replace那样进行转义,并且必须指定替换字符串:

$MyDouble2.Replace('.', '') # -> '55'
要删除仅提取整数部分的数字的小数部分,请直接在$MyDouble上使用数字运算,而不是通过存储在$MyDouble2中的字符串表示,通过:

查看.Trim[char[]]您将看到

从当前字符串对象中删除数组中指定的一组字符的所有前导和尾随匹配项

这不包括字符串的中间部分,因此使用该方法可以实现这一点

我想也有一种方法可以用数字来做,但我想用字符串来做

$MyDouble2 -replace '\..*' # -> '5'
我只想提一下,将数字转换为字符串,然后通过字符串操作删除小数是一种糟糕的方法。假设您的示例是您实际要做的,我建议改用[math]类中的静态方法

$MyDouble = 5.5
[math]::Floor($MyDouble)

回答两次,虽然不是禁止的,但通常是不鼓励的,除非你的方法有很大的不同。这里的例子只是对trim方法工作原理的误解。另外,您的代码最好至少对正在发生的事情进行一个小的解释。@Matt:谢谢您的反馈。我已经改变了措辞,加入了你的备选方案。就个人而言——我知道这是个人的选择——如果可能的话,我会尝试留在PowerShell领域,因此我更喜欢使用更强大的-replace和-split操作符,而不是.NET.replace和.split string方法。虽然后者有时是一种方便的选择,但它们确实需要您记住它们,以及它们的行为与PS类似物的区别。
$MyDouble = 5.5
[math]::Floor($MyDouble)
$MyDouble = 5.5

[String]$MyDouble2 = $MyDouble

$res=$MyDouble2 -split "\."
$res[0..($res.Count-1)] -join ""