powershell - 如何忽略字母/单词?
问题描述
假设我有以下代码:
$size = 23.9
$size = "$size GB"
write $size
我想为其他事情使用相同的变量,即
if ($size -lt 20)
{...}
这显然是一个问题,因为$size
这里有 GB/是一个字符串
我如何忽略字符串部分?
我正在寻找这样的东西:
if($($size -replace ("anything after the numbers", "")) -lt 20)
{....}
解决方案
如果您坚持使用字符串并与-replace
运算符保持一致,则可以使用以下内容:
[double]($size -replace "[^\d\.]+$")
int
如果您维护类似or的数值类型double
,您可以使用其他方式来处理您的数据。您仍然可以在保持$size
双精度的同时输出字符串。
$size = 23.9
$unit = 'GB'
"{0} {1}" -f $size,$unit
23.9 GB
与上述示例非常相似的概念是创建$size
为自定义对象。
$size = [pscustomobject]@{Size = 23.9; Unit = 'GB'}
"{0} {1}" -f $size.Size,$size.Unit
您可以进行动态单元分配。如果我们假设您从字节大小开始,您可以分配单位并进行转换。
if ($size -ge 1GB)
{
$newSize = [pscustomobject]@{
Size = $size/1GB; Unit = 'GB'
}
}
elseif ($size -ge 1MB)
{
$newSize = [pscustomobject]@{
Size = $size/1MB; Unit = 'MB'
}
}
elseif ($size -ge 1KB)
{
$newSize = [pscustomobject]@{
Size = $size/1KB; Unit = 'KB'
}
}
else
{
$newSize = [pscustomobject]@{
Size = $size; Unit = 'B'
}
}
推荐阅读
- java - FilteredRowSet 过滤器不累积应用
- python - 如何将选定行的数组从数据表传递到 Flask?
- python - 我需要我的 csv 输出使用逗号而不是分号,这样我就可以将它插入我的 sqlite DB
- python - 直方图python的类型问题
- php - Laravel 5.4 是否与 PHP 7.3 兼容
- python-3.x - 如何合并同一数据框中的两行
- sql - 根据条件更新 seq - Oracle SQL
- simulation - 服务项目的使用
- protocol-buffers - 为什么协议缓冲区不是使用标记对基于文本的文档进行建模的好方法?
- swift - NSAttributedString 和 emoji:我从未设置的范围似乎已设置