我有一个格式的字符串:
string path="/fm/Templates/testTemplate/css/article.jpg";
我想将其与第二个'/'分开并将'/'替换为'\\'想要这样的结果。
string newPath="\\Templates\\testTemplate\\css\\article.jpg";
我的path
是动态创建的,因此不修复文件夹层次结构。
这样做的最佳方法是什么。我可以先将string path
与/
分开,然后循环重新连接,并用“/”重新设置为“\\”,或者有任何简单的方法我我失踪了。
答案 0 :(得分:2)
你不能只使用String.Replace吗?
答案 1 :(得分:1)
string path = "/fm/Templates/testTemplate/css/article.jpg";
path = path.Substring(path.IndexOf('/', 1)).Replace("/", "\\\\");
答案 2 :(得分: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"
答案 3 :(得分:0)
从路径中删除第一个项目后,您可以创建一个新字符串。以下内容将为您提供所需的结果。它可能是优化的。
您可以尝试:
/
上拆分字符串并删除空条目。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);
答案 4 :(得分: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]);
答案 5 :(得分:0)
您可以使用以下代码。
string path="/fm/Templates/testTemplate/css/article.jpg";
string newpath = path.Replace("/fm", string.Empty).Replace("/","\\");
由于
答案 6 :(得分: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);
答案 7 :(得分:0)
你的字符串操作真的是那么时间关键,你需要一次完成所有事情吗?将其分解成部分要容易得多:
// First remove the leading /../ section:
path = Regex.Replace("^/[^/]*/", "", path);
// Then replace any remaining /s with \s:
path = path.Replace("/", "\\");