String.Replace不修改我的String

时间:2013-09-09 14:16:19

标签: c# string replace

我正在尝试保存大量图片,并且我希望使用DateTime来创建不同的可识别文件名。 因此,我使用正确的Path创建一个String,向其添加日期时间并删除空格,点和冒号。

        String imagePath = "D:\\Patienten\\" + username;
        imagePath += "\\"+DateTime.Now.ToString();
        Console.WriteLine("WithFilename: " + imagePath);
        imagePath.Replace(" ", "");
        Console.WriteLine("Without \" \" : " + imagePath);
        imagePath.Replace(".", "");
        Console.WriteLine("Without \".\": " + imagePath);
        imagePath.Replace(":", "");
        Console.WriteLine("Output format: " + imagePath);
        imagePath += ".png";
        image.Save(imagePath);

根据控制台输出,String根本没有变化。 这意味着Console.Writeline中的所有输出字符串都是相同的。 我在visual Studio Express 2010中使用c#,以防万一。 任何人都可以在这里找到错误吗?

提前致谢!

4 个答案:

答案 0 :(得分:15)

字符串是不可变的,修改后的字符串将是从函数

返回的新字符串

e.g。

imagePath = imagePath.Replace(" ", "");

Why strings are immutable

答案 1 :(得分:2)

为什么不将DateTime.ToString()格式一起使用并删除分隔符呢?比自己执行多个String.Replace()更有效:

string imagePath = "D:\\Patienten\\" + username + "\\" + DateTime.Now.ToString("yyyyMMdd hhmmssfff") + ".png";

答案 2 :(得分:1)

您应该使用:

imagePath = imagePath.Replace(" ", ""); You should assign returned value

答案 3 :(得分:1)

来自documentation(强调我的):

  

返回新字符串,其中当前实例中所有出现的指定字符串都替换为另一个指定的字符串。

它应该像那样工作。使用

imagePath = imagePath.Replace(" ", "");

代替。