-2

我正在尝试保存一些图像,并且我想使用 DateTime 来拥有不同且可识别的文件名。所以我用正确的路径创建了一个字符串,将日期时间添加到它并删除空格、点和冒号。

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

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

提前致谢!

4

4 回答 4

15

字符串是不可变的,修改后的字符串将是函数返回的新字符串

例如

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

为什么字符串是不可变的

于 2013-09-09T14:17:34.417 回答
2

为什么不直接使用DateTime.ToString()格式使用它删除分隔符?会比String.Replace()自己执行几个更有效率:

string imagePath = "D:\\Patienten\\" + username + "\\" + DateTime.Now.ToString("yyyyMMdd hhmmssfff") + ".png";
于 2013-09-09T14:20:03.240 回答
1

你应该使用:

imagePath = imagePath.Replace(" ", ""); You should assign returned value
于 2013-09-09T14:18:10.130 回答
1

文档(强调我的):

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

它应该像那样工作。利用

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

反而。

于 2013-09-09T14:18:50.633 回答