How to remove space from DateTime in C#?
我开发了一个Xamarin表单应用程序,并将当前日期时间指定为图像的文件名。目前图片保存为"7202017 53150 pm.jpg"。我希望它能像这样保存。如何删除日期和时间之间的空格?
我试过像下面这样,但没用。
1 2
| string _imagename = DateTime.Now.ToString();
_imagename.Replace("", string.Empty); |
- 第二行应该是_imagename = _imagename.Replace("", string.Empty);。
- "7202017 53150 PM.jpg"永远不会是DateTime.Now.ToString()的结果。总是显示真正的代码。为什么不首先通过修改格式来生成正确的字符串,而不是替换空格?
实际上,String.Replace()返回一个新字符串,其中当前实例中指定字符串的所有出现都被另一个指定字符串替换(简而言之,它不会更改实际字符串),因此需要将结果赋给另一个变量。在那里执行替换操作。
但你为什么要换另一个呢?为什么不能像下面那样使用.ToString()?
1 2
| string format ="Mddyyyyhhmmsstt";
string _imagename = String.Format("{0}.jpg",DateTime.Now.ToString(format)) |
号
- 我认为ops格式是"mddyyyy…",因为第一个数字是720,我想不出还有什么其他格式…
- 应该是DateTime.Now.ToString("MMddyyyyhhmmsstt")。格式字符串以第一个数字为月。
- @Tetsuyayamamoto:变化不大,格式应该是"Mddyyyyhhmmsstt",因为在预期的输出中,这个月被指定为7,而不是07。
- @不走运,谢谢,下面罗曼诺·祖姆的回答也很有效,但这是最好的。
- 还要注意-小时似乎是一个数字-所以h而不是hh
您需要分配新值,因为字符串是不可变的:
1 2 3
| string _imagename = DateTime.Now.ToString();
_imagename = _imagename.Replace("", string.Empty); |
- 就我个人而言,我投了反对票,但也许反对票的人认为字符串应该是没有空格的生成,而不是后来删除的空格。但这确实回答了问题,并准确地告诉了行动党他做错了什么。
- 没有投反对票。但是,OP不应该首先创建错误的日期时间字符串,而应该显示如何用空字符串替换空格(您可以在其中找到大量重复项)。
- 谢谢,我已经开发了将图像上载到服务器的应用程序,但不知道如何删除空间。
- 你们都是对的!这只是解决了一个不必要的问题。最好首先生成一个合适的字符串,比如在不幸运的答案中。但在这种情况下,该操作无法更改输入字符串的创建,这将有助于
- 是的。我认为这个答案之所以有用,最大的原因是它解决了操作不分配替换结果的问题。这是一件很重要的事情,即使这不是做他们正在做的事情的最好方法。
这是我知道的最快的方法:
1
| Regex.Replace(_imagename, @"\s+","") |
查看您的字符串,我还建议用空字符串替换空格。您可以通过应用内置的Replace方法来实现:
1 2 3
| string _imagename = DateTime.Now.ToString();
_imagename = _imagename.Replace("", string.Empty); |
。
- 我可能在这里遗漏了一些东西——但你的第二个建议与OP所说的不起作用的原始问题到底有什么不同?
- @保罗谢谢保罗
如果你想按文件名订购,我建议使用像yyyyMMddHHmmss这样的符号。这样,随着日期/时间的增加,排序顺序也会增加。
除此之外,字符串在C中是不可变的。因此,调用Replace不会更改原始字符串。如@romano zumb_所指出的,您需要将结果赋给您的变量。
您可以使用如下格式字符串(包括排序建议):
1
| string imagename = $"{DateTime.Now:yyyyMMddHHmmss}.jpg"; |
否则将是:
1
| string imagename = $"{DateTime.Now:Mddyyyyhmmsstt}.jpg"; |
。