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

时间:2016-11-16 16:48:49

标签: powershell

我需要使用String.Trim()来创建一个String,以删除句号,但它不会删除它。我认为还有一种方法可以用数字方式做到这一点,但我想用字符串来做。有没有理由它不能删除它?代码的输出是5.5

c = bsxfun(@times, fftlogim, f);

5 个答案:

答案 0 :(得分:3)

String.Trim()仅从字符串的开头和结尾进行修剪,因此它对您的命令没有任何影响,因为.仅在内发生 >你的输入字符串。

如果您确实想仅删除. 并保留小数点后的数字,请使用-replace运算符:

$MyDouble2 -replace '\.' # -> '55'

注意:
* -replace正则表达式(正则表达式)作为搜索操作数,因此需要将正则表达式元字符.转义为\.
*以上是$MyDouble2 -replace '\.', ''的缩写。由于在这种情况下替换字符串是空字符串,因此可以省略。

如果您只想提取整数部分,请使用4c74356b41's .Split()-based answer,或调整传递给-replace的正则表达式以匹配.$MyDouble2 -replace '\..*' # -> '5' 的所有内容字符串的结尾。

.

@Matt提到了以下替代方案:

  • 仅用于删除.:使用String.Replace()执行文字子字符串替换(请注意\因此需要-replace - 转义,就像使用$MyDouble2.Replace('.', '') # -> '55' 一样,并指定替换字符串是必需的):

    $MyDouble
  • 用于删除数字的小数部分(仅提取整数部分),直接在$MyDouble2上使用数字操作(而不是通过字符串) 表示存储在[math]::Floor($MyDouble) # -> 5 (still a [double]) )中,通过Math.Floor()

    {
        '2807281f81481ffbd4183da0003dfe1820343ff6': {
        'macaddr': '64:a3:cb:ba:5c:76',
        'parameters': [
          '1',
          '121',
          '3',
          '6',
          '15',
          '119',
          '252'
        ],
        'ip': '192.168.1.120',
        'vendor_id': 'MSFT 5.0',
        'HOSTID': '2807281f81481ffbd4183da0003dfe1820343ff6',
        'time': 1479309949.7988095,
        'os': 'Apple iPhone',
        'hostname': 'Alles-iPhone'
        }
    }
    

答案 1 :(得分:3)

.Trim([char[]])查看[math],您会看到

  

从当前String对象中删除数组中指定的一组字符的所有前导和尾随出现次数。

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

  

我认为还有一种方法可以用数字方式做到这一点,但我想用字符串来做。

只是想提一下,将数字转换为字符串然后通过字符串操作删除小数是一种糟糕的方法。假设您的示例是您实际尝试的内容,我建议使用$MyDouble = 5.5 [math]::Floor($MyDouble) 类中的静态方法。

packages: {
'app': { main: './main.js', defaultExtension: 'js' },
'api' : { defaultExtension : 'js' },
'rxjs': { defaultExtension: 'js' },
}

答案 2 :(得分:1)

 $MyDouble = 5.5

 [String]$MyDouble2 = $MyDouble

 $MyDouble2.Replace(".", "")

答案 3 :(得分:0)

那么,为什么它不会削减最后一个(或第一个)角色呢?它不会,你需要的(可能)是:

$MyDouble = 5.5
[String]$MyDouble2 = $MyDouble
$MyDouble2.Split(".")[0]

答案 4 :(得分:0)

$MyDouble = 5.5

[String]$MyDouble2 = $MyDouble

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