我有下面的命令: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