【问题标题】:Get Difference of 2 Paths [duplicate]获取2条路径的差异[重复]
【发布时间】:2014-12-14 17:13:27
【问题描述】:

说我有

string path1 = "C:\\apples";
string path2 = "C:\apples\blah\meh.jpg";

我怎么能得到:

string diff = "\blah\meh.jpg";

谢谢

【问题讨论】:

  • 当然我自己可以想出很多方法来推出它,但我想知道如何有效地利用.NET。
  • @Milo:所以让它工作并前往codereview.stackexchange.com。如果您有问题,请在这里询问。如果您已解决但希望对其进行审核:转到 CR。如果你还没有尝试过:那就去做吧。
  • 对于它的价值,我认为人们很快就会在这些问题上抢先一步。当然@Milo 可以在这个问题上投入更多的精力,但我认为这个问题并不像其他人认为的那样微不足道。问题的关键是将两条路径都转换为规范形式(msdn.microsoft.com/en-us/library/windows/desktop/…
  • 当我 5 年前开始使用 SO 时,可以在 SO 上提出哪些类型的问题已经很清楚了,但现在有太多 StackExchange 站点的代码,我都感到困惑。

标签: c# winforms


【解决方案1】:

如果 Path 实际上包含双斜杠(通常不会发生):

  1. path1 中将\\ 替换为\

  2. path2 中将path1 替换为Empty String

    string diff = path2.Replace(path1.Replace(@"\\", @"\"), "");
    

否则:

string diff = path2.Replace(path1, "");

【讨论】:

  • 如何处理连续两个"\\",你注意到我第一个是"C:\\apple"
  • 您的解决方案在某些情况下会失败..
  • @Milo in path2 你也应该使用“\\”。否则会报错:unrecognized space sequence.
  • @AmitSharma @ 可用于避免该错误
  • @Shaharyar 是的。我知道。但在这种情况下,您必须将其声明为:string path2=@"C:\apples\blah\meh.jpg"
猜你喜欢
  • 1970-01-01
  • 2011-07-18
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多