如何在 C# 中替换字符串路径

Posted

技术标签:

【中文标题】如何在 C# 中替换字符串路径【英文标题】:How to replace a string path in C# 【发布时间】:2011-07-28 07:23:56 【问题描述】:
string = @"http://192.168.30.40/mylytica/Uploads/EncryptedFile/whg_12_20_2010.pdf";
if (strEncrypt.Contains("/EncryptedFile"))

     strEncrypt.Replace(@"/EncryptedFile", @"/DecryptedFile");

iFrame_pdf.Attributes.Add("src", strEncrypt);

它对我不起作用:( 我需要将文件路径 Encrypted 替换成 Decrypted

提前致谢

【问题讨论】:

【参考方案1】:

.NET 字符串是不可变的,因此Replace() 返回一个新字符串。

这样做:

string strEncrypt = @"http://192.168.30.40/mylytica/Uploads/EncryptedFile/whg_12_20_2010.pdf";    
if (strEncrypt.Contains("/EncryptedFile"))    
    
  strEncrypt = strEncrypt.Replace(@"/EncryptedFile", @"/DecryptedFile");

另外:如果strEncrypt 类似于"http://192.168.30.40/mylytica/Uploads/EncryptedFile/EncryptedFile.pdf",请记住考虑结果应该是什么。

【讨论】:

【参考方案2】:

字符串是不可变的,因此您需要将新字符串分配给变量:

strEncrypt = strEncrypt.Replace(@"/EncryptedFile", @"/DecryptedFile");

【讨论】:

这个差点投了票,只是变量名不一样:) 你看起来不够近:)?【参考方案3】:

你需要改变这个:

strEncrypt.Replace(@"/EncryptedFile", @"/DecryptedFile");

到这里:

strEncrypt = strEncrypt.Replace(@"/EncryptedFile", @"/DecryptedFile");

来自关于 String.Replace 的 Microsoft 文档 (http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx):

注意 此方法不会修改当前实例的值。相反,它返回一个新字符串,其中所有出现的 oldValue 都被 newValue 替换。

【讨论】:

【参考方案4】:

字符串 strEncrypt = @"http://192.168.30.40/mylytica/Uploads/EncryptedFile/whg_12_20_2010.pdf"; if (strEncrypt.Contains("EncryptedFile")) strEncrypt = strEncrypt.Replace(@"EncryptedFile", @"DecryptedFile");

【讨论】:

以上是关于如何在 C# 中替换字符串路径的主要内容,如果未能解决你的问题,请参考以下文章

C# 如何高效替换一个字符串中的全部某字符?

如何使用 C# 在给定文本中用忽略空格、回车或换行符替换字符串

在 C# 中将字符串中的“\\”替换为“\”

C#如何替换字符串中的第一个单词

如何在 C# 中使用 Regex 将 [number] 替换为 number - 1?

如何在 C# 中用单个空格替换多个空格?