C# String.replace删除反斜杠

C# String.replace删除反斜杠,c#,asp.net,replace,C#,Asp.net,Replace,我有一个问题,我确信它很简单,但它在我的代码中不起作用。我正在创建一个日志文件,我想将日期连接到文件名,以便他们知道日志是何时生成的。My string.replace没有从我已转换为字符串的日期中删除“\” 见下面的代码: string DateNow = Convert.ToString(System.DateTime.Now); DateNow = DateNow.Substring(0, 10); DateNow.Replace(@"\\"

我有一个问题,我确信它很简单,但它在我的代码中不起作用。我正在创建一个日志文件,我想将日期连接到文件名,以便他们知道日志是何时生成的。My string.replace没有从我已转换为字符串的日期中删除“\”

见下面的代码:

        string DateNow = Convert.ToString(System.DateTime.Now);
        DateNow = DateNow.Substring(0, 10);
        DateNow.Replace(@"\\", "-");

        string FileName = "log" + DateNow + ".txt";

        // Write values to textfile and save to Log folder
        using (StreamWriter sw = new StreamWriter(HttpContext.Current.Server.MapPath("~/Log" + FileName))) 
        {
            sw.WriteLine(System.DateTime.Now);
            sw.WriteLine("New user created");
            sw.WriteLine("Username is: " + username);
            sw.WriteLine("Password is: " + password);
            sw.WriteLine("Company is: " + company);
            sw.WriteLine("Email is: " + email);
            sw.Dispose();
            sw.Close(); 
        }
这将引发异常,因为windows中的文件名不能包含\字符。你知道为什么替换方法不起作用吗


谢谢。

它正在工作,但您没有存储结果。它需要阅读

DateNow = DateNow.Replace(@"\", "-");
但这只是一个糟糕解决方案的补丁。为什么不先用正确的方法来做呢?使用
DateTime.ToString
代替。例如:

string DateNow = System.DateTime.Now.ToString("yyyy-MM-dd"); // or any other format

您已经使用@符号转义了反斜杠,因此replace函数查找的是“\\”,而不是“\”。要使代码正常工作,请将其更改为:

DateNow = DateNow.Replace(@"\", "-");

直接
System.DateTime.Now.Date.ToString('MM-dd-yyyy')

DateTime
日期与时间

string newDate = DateTime.Now.ToString().Replace('/','-');
仅限日期

string newDate = DateTime.Now.Date.ToString().Replace('/','-');
输出


2012年9月27日下午5:20:12

您还可以编写
yyyy/MM/dd


查看此链接了解更多日期格式

System.DateTime.Now.ToString('MM-dd-yyyy');谢谢我没有想到使用Now.ToString(“yyyy-MM-dd”)作为设置日期格式的方法。我将此标记为正确答案,因为Jon非常重视使用自定义格式而不是使用替换来删除字符。
string DateNow = System.DateTime.Now.ToString("yyyy-MM-dd");