拆分并替换字符串

时间:2012-09-17 05:04:20

标签: c# asp.net

我有一个格式的字符串:

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

我想将其与第二个'/'分开并将'/'替换为'\\'想要这样的结果。

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

我的path是动态创建的,因此不修复文件夹层次结构。 这样做的最佳方法是什么。我可以先将string path/分开,然后循环重新连接,并用“/”重新设置为“\\”,或者有任何简单的方法我我失踪了。

8 个答案:

答案 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)

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

您可以尝试:

  • 在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);

答案 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("/", "\\");