如何用C#得到「相對根目錄」?

如題,有兩個存儲目錄信息的字元串,分別是:

X:aaabbcccfff.avi

X:aaabbcccdddggg.mp3

現在需要弄個啥東西,以「ccc」為根目錄,弄成這樣:

cccfff.avi

cccdddggg.mp3

請問各位大神有沒有什麼簡便方法可以實現?

我現在的想法是把這倆String搞成char數組,然後寫個for循環,挨個對比,比到指定位置停下來剪掉不要的,留下需要的部分,但這樣似乎太慢了,有沒有更好的辦法?

先感謝兩位大神回復,

這裡的公共路徑部分(X:aaabb)會變化,是讓用戶去選的,不是寫在源碼釘死的,所以比較困難,StartsWith不好確定這個公共部分,正在研究如何解決中……


1、split by "\"

2、算一下那個數組比較短

3、for一下挨個比

或者

a.Split("\")

.Zip(b.Split("\"), Tuple.Create)

.TakeWhile(p=&>p.Item1==p.Item2)

.Select(p=&>p.Item1)

.Aggregate((a,b)=&>a+""+b)


這種基本編程題完全應該自己想。

index = -1;
for i = 0 to min(len(x), len(y))
if (x[i] != y[i])
break;
if (x[i] == "\")
index = i;


String 類?(System)

StrartWith

Substring


linq版,手機打字

String.Join(path.spilt(@"").Skip(2).ToArray())


我也不知道為什麼要這樣搞,或許是我的理解有差異,亦或者是你的思路有問題。

首先問問這個問題,如果有兩個地址字元串:

X:aaabbcccdddggg.avi

X:aaabbcccdddhhh.mp3

這個時候你想要獲取的是X:aaabbccc還是X:aaabbcccddd?

如果是前者,我可以理解為你搞了一個應用程序,然後想得到這個程序的安裝目錄,對嗎?如果是,你可以在安裝的時候將程序目錄寫入註冊表呢,或者加入環境變數也行,或者用主程序在運行中去獲取目錄也行啊。

如果是後者,那就先切割一個較短目錄(考慮到文件名問題,所以要用目錄,不能要文件名)的字元串,然後檢查是否在另一個裡面,然後再拼接起來


https://github.com/dpull/UnityUtils/blob/master/IO.cs

幾年前寫過一個,最下面


化成char數組,兩個數組元素挨個異或,直到出現1所在的\部分。


PathRelativePathTo function (Windows)


字典樹?


string - how to extract common file path from list of file paths in c#

這個帖子應該有幫助


推薦閱讀:

iPad 上有哪些源代碼閱讀軟體?
程序員會寫文章嗎?
大家編寫程序時最喜歡的是什麼字體?
如果一個程序員工作5年後還沒成為大牛,是不是該考慮別的路子了?
自學編程的難度如何?

TAG:微軟Microsoft | 編程 | 計算機 | NET | C# |