我有下面的命令:String.TrimStart()不能像我预期的那样工作,为什么?
> "D:\abc\abcName".TrimStart("D:\abc")
Name
其实我想这正是修剪“d:\ ABC”仅返回“abcName”但目前看来,第二届“ABC”被剪掉,以及。
为什么会发生这种情况,我该如何解决?
我正在使用PS 4.0。
我有下面的命令:String.TrimStart()不能像我预期的那样工作,为什么?
> "D:\abc\abcName".TrimStart("D:\abc")
Name
其实我想这正是修剪“d:\ ABC”仅返回“abcName”但目前看来,第二届“ABC”被剪掉,以及。
为什么会发生这种情况,我该如何解决?
我正在使用PS 4.0。
的参数被视为char
的数组,而不是字面字符串。匹配参数“D:\ abc”中任何字符的字符串开始处的所有连续字符都将被删除。
您可以使用-replace
操盘手,这需要一个正则表达式作为其右手的说法:
PS C:\> "D:\abc\abcName" -replace "^D:\\abc\\"
abcName
如果您不确定逃脱(如\
)的字符,让[regex]
class do it for you:
PS C:\> "D:\abc\abcName" -replace "^$([regex]::Escape("D:\abc\"))"
abcName
Mathias R. Jessen指出。
看起来像要从路径中获取文件名。除了使用TrimStart考虑使用静态GetFileNameWithoutExtension方法:
[system.io.path]::GetFileNameWithoutExtension("D:\abc\abcName.bat")
结果:
abcName
或者,如果你想扩展名的完整文件名:
[system.io.path]::GetFileName("D:\abc\abcName.bat")
结果:
abcName.bat