如何从C#中的DateTime中删除空格?


How to remove space from DateTime in C#?

本问题已经有最佳答案,请猛点这里访问。

我开发了一个Xamarin表单应用程序,并将当前日期时间指定为图像的文件名。目前图片保存为"7202017 53150 pm.jpg"。我希望它能像这样保存。如何删除日期和时间之间的空格?

我试过像下面这样,但没用。

1
2
string _imagename = DateTime.Now.ToString();
_imagename.Replace("", string.Empty);


实际上,String.Replace()返回一个新字符串,其中当前实例中指定字符串的所有出现都被另一个指定字符串替换(简而言之,它不会更改实际字符串),因此需要将结果赋给另一个变量。在那里执行替换操作。

但你为什么要换另一个呢?为什么不能像下面那样使用.ToString()

1
2
string format ="Mddyyyyhhmmsstt";
string _imagename = String.Format("{0}.jpg",DateTime.Now.ToString(format))


您需要分配新值,因为字符串是不可变的:

1
2
3
string _imagename = DateTime.Now.ToString();

_imagename = _imagename.Replace("", string.Empty);


这是我知道的最快的方法:

1
Regex.Replace(_imagename, @"\s+","")

查看您的字符串,我还建议用空字符串替换空格。您可以通过应用内置的Replace方法来实现:

1
2
3
    string _imagename = DateTime.Now.ToString();

   _imagename = _imagename.Replace("", string.Empty);


如果你想按文件名订购,我建议使用像yyyyMMddHHmmss这样的符号。这样,随着日期/时间的增加,排序顺序也会增加。

除此之外,字符串在C中是不可变的。因此,调用Replace不会更改原始字符串。如@romano zumb_所指出的,您需要将结果赋给您的变量。

您可以使用如下格式字符串(包括排序建议):

1
string imagename = $"{DateTime.Now:yyyyMMddHHmmss}.jpg";

否则将是:

1
string imagename = $"{DateTime.Now:Mddyyyyhmmsstt}.jpg";