Powershell 拆分变量,无换行符或空格

Powershell 拆分变量,无换行符或空格

我正在尝试拆分不带扩展名的文件名并将其分配给新变量。但是 .split('') 函数添加了新的空格或制表符。有什么建议可以解决这个问题吗?

$dmpfile = "test.dmp"
$filename = $dmpfile.split('.dmp')
echo $filename
test

ls $filename*.log
no output.............
echo $filename*.log
test     *.log

答案1

首先,分裂函数创建一个包含出现在分割字符之间的所有字符串的对象。您必须使用 来访问属性的单个项目$variable[x],其中 x 是您想要的项目的位置。在您的例子中,您必须调用$filename[0]。(第一个项目不是 1,它从 0 开始)

其次,我无法真正解释原因,但如果你像以前一样使用字符串方法 split,则每个字符都将被处理为可能的分隔符。这就是为什么'pmdasdfgpmd.dmp'.split(".dmp")将返回韓國- 就像你使用修剪。但是如果你像这样使用该函数:

'pmdasdfgpmd.dmp' -split".dmp"

它将返回不带扩展名的文件名:韓國

第三,如果要删除字符串的一部分,也可以使用代替方法并将字符串替换为空:

任何一个

'test.dmp'.replace(".dmp","")

或者

'test.dmp' -replace ".dmp"

但这只是 powershell 中的一些基本字符串替换 - 获取没有扩展名的文件名的最简单方法是@PetSerAl 提出的方法:

[System.IO.Path]::GetFileNameWithoutExtension($dmpfile)

或者调用Get-ItemPSFunction 并使用BaseName-Property:

(Get-Item $dmpfile).BaseName

在这两种情况下,变量 $dmpfile 都必须保存文件的完整路径,而不仅仅是文件名。

答案2

您应该使用 Trim() 而不是 Split()。$filename = $dmpfile.Trim(".dmp")

相关内容