String.replace删除反斜杠

时间:2012-09-27 11:42:58

标签: c# asp.net replace

我有一个问题,我确信它很简单,但它在我的代码中不起作用。我正在创建一个日志文件,我想将日期连接到文件名,以便他们知道何时生成日志。我的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中的文件名不能包含\ character。任何想法为什么替换方法不起作用?

感谢。

4 个答案:

答案 0 :(得分:7)

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

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

但这只是一个糟糕解决方案的补丁。为什么不首先以正确的方式做到这一点?请使用DateTime.ToString代替custom format string。例如:

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

DateTime日期与时间

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

Date

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

输出

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

答案 3 :(得分:0)

无需执行任何操作splitconvert ToString()

string DateNow = System.DateTime.Now.ToString("yyyy-MM-dd");

代替yyyy-MM-dd你也写yyyy/MM/dd

点击此链接可获取更多日期格式Dateformate