1: static void Main(string[] args)
2: {
3: string a = @"c:\a\b\c\d";
4: string b = @"c:\a\b\e\f\1.txt";
5: int n = 0;
6: Console.WriteLine(GetRelativePaths(b, a));
7: Console.ReadKey();
8: }
9:
10: public static string GetRelativePaths(string path, string current)
11: {
12: string a = current.ToLower();
13: string b = path.ToLower();
14: int i = 0;
15: for (; i < Math.Min(a.Length,b.Length); i++)
16: {
17: if (a[i] != b[i]) break;
18: }
19: string cur = Regex.Replace(a.Substring(i - 1), @"\\?[a-zA-Z]+:?", @"..\");
20: return (cur + path.Substring(i + 1)).Replace(@"\\", @"\");
21: }
输出:
..\..\f\1.txt