0

我有一个格式的字符串:

string path="/fm/Templates/testTemplate/css/article.jpg";

我想用第二个 '/' 拆分它并用 '/' 替换为 '\\' 想要这样的结果。

string newPath="\\Templates\\testTemplate\\css\\article.jpg";

Mypath是动态创建的,因此文件夹层次结构不固定。最好的方法是什么。我可以先拆分string path/转到循环以重新连接它,然后用 '/' 替换为 '\\' 或者我缺少任何简单的方法。

4

8 回答 8

2

你不能只使用String.Replace吗?

于 2012-09-17T05:06:19.040 回答
1
string path = "/fm/Templates/testTemplate/css/article.jpg";
path = path.Substring(path.IndexOf('/', 1)).Replace("/", "\\\\");
于 2012-09-17T05:12:38.817 回答
0

试试这个:

public static int nthOccurrence(String str, char c, int n)
{
    int pos = str.IndexOf(c, 0);
    while (n-- > 0 && pos != -1)
        pos = str.IndexOf(c, pos + 1);
    return pos;
}    

string path = "/fm/Templates/testTemplate/css/article.jpg";

int index = nthOccurrence(path, '/', 1);
string newpath = path.Substring(index).Replace("/", "\\");

输出: "\\Templates\\testTemplate\\css\\article.jpg"

于 2012-09-17T05:07:12.807 回答
0

从路径中删除第一项后,您可以创建一个新字符串。以下将为您提供所需的结果。它可能会被优化。

你可以试试:

  • 在 char 上拆分字符串/并删除空条目。
  • 忽略拆分数组中的第一项后获取新数组
  • 用于string.Join创建带有\\分隔符的新字符串。

这是代码:

string path = "/fm/Templates/testTemplate/css/article.jpg";
string[] temp = path.Split("/".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var newTemp = temp.AsEnumerable().Where((r, index) => index > 0);
string newPath2 = string.Join("\\", newTemp);
于 2012-09-17T05:11:03.657 回答
0

如果您正在处理路径的各个部分(而不仅仅是替换斜线的方向),System.Uri 类将有所帮助(.Segments 属性)。

例如来自MSDN

Uri uriAddress1 = new Uri("http://www.contoso.com/title/index.htm");
Console.WriteLine("The parts are {0}, {1}, {2}", uriAddress1.Segments[0], uriAddress1.Segments[1], uriAddress1.Segments[2]);
于 2012-09-17T05:11:13.320 回答
0

您可以使用以下代码。

string path="/fm/Templates/testTemplate/css/article.jpg"; 
string newpath = path.Replace("/fm", string.Empty).Replace("/","\\"); 

谢谢

于 2012-09-17T05:11:41.740 回答
0

试试这个,

string path = "/fm/Templates/testTemplate/css/article.jpg";
string[] oPath = path.Split('/');
string newPath = @"\\" + string.Join(@"\\", oPath, 2, oPath.Length - 2);
Console.WriteLine(newPath);
于 2012-09-17T05:12:19.907 回答
0

您的字符串操作真的对时间至关重要,以至于您需要一次完成所有操作吗?将其分解为多个部分要容易得多:

// First remove the leading /../ section:
path = Regex.Replace("^/[^/]*/", "", path);

// Then replace any remaining /s with \s:
path = path.Replace("/", "\\");
于 2012-09-17T05:18:36.613 回答