2012-01-11 234 views
0

如何分割字符串?如何分割字符串

我想將C:\RoamingFiles\D\file.txt變成D:\file.txt

我不知道該怎麼做,因爲拆分不會按我想要的方式過濾掉C:\RoamingFiles\

回答

2

我有點困惑,你到底想要什麼-split在這裏做。它看起來像

$myString -replace '^C:\\RoamingFiles\\([^\\]+)\\', '$1:\' 

會更好地爲你似乎在那裏做什麼。這基本上用下面的驅動器號代替了路徑組件C:\RoamingFiles\。但是,這只是一個猜測,因爲你只舉了一個例子。

+0

非常感謝您! – 2012-01-11 15:42:47

+0

@AlexBazuvul如果回答了您的問題,請確保您接受喬伊的回答。 – Aaron 2012-01-11 15:45:59

+0

這個正則表達式不能處理8個字母的路徑。 (例如c:\ PROGRA〜1 \)。你能解決這個問題嗎?謝謝。 – 2012-01-11 17:08:37

1

試過這個用法[System.IO.Path]?

$name = "C:\RoamingFiles\file.txt" 
$shortname = [System.IO.Path]::GetFileName($name) 
$newname = [System.IO.Path]::Combine("D:\", $shortname) 
echo $newname 
+0

它並不總是D.驅動器是C:\ RoamingFiles中的第一個目錄 – 2012-01-11 17:11:56

0

這應該只是罰款(包括子文件夾):

$fullPath = "C:\RoamingFiles\D\test\test2\file.txt" 
$baseFolder = "C:\RoamingFiles\" -replace "\\", "\\" 
$fullPath -match "$baseFolder([a-z]\\.+)" | Out-Null 
Write-Host $matches[1].Insert(1, ":")