как разбить строку, чтобы получить только дату - PullRequest
0 голосов
/ 12 октября 2011

У меня есть такая строка ниже ....

 string a = backup-2011-10-12_17-16-51.zip

Как я могу разбить вышеуказанную строку, чтобы получить только эту часть 2011-10-12

Для этого я попробовал это ниже, но я не уверен, как разделить строку точно так, как это

2011-10-12

  string[] getfiledate = a.Split(new[] { '.', '-','_' });

Поможет ли кто-нибудь, как разбить одну строку .. .....

заранее большое спасибо ..

Ответы [ 5 ]

4 голосов
/ 12 октября 2011

Если строка всегда одинаковой длины, просто используйте

a.Substring(7,10)
3 голосов
/ 12 октября 2011

Здесь будет полезно регулярное выражение.

(\d{4}-\d{2}-\d{2})
2 голосов
/ 12 октября 2011

Вот мой личный фаворит:

DateTime dt = DateTime.ParseExact("backup-2011-10-12_17-16-51.ip", "backup-yyyy-dd-MM_HH-mm-ss.ip", null);

Это позволяет избежать вычислений подстрок, но, если вы заметите, мне пришлось удалить z из zip в вашем примере, потому что в вычислении часового пояса z - это смещение gmt.Если вы можете избежать z, то это работает очень хорошо.

РЕДАКТИРОВАТЬ Для более удивительного ответа

используйте @ и \ для выхода из z:

DateTime dt = DateTime.ParseExact("backup-2011-10-12_17-16-51.zip", @"backup-yyyy-dd-MM_HH-mm-ss.\zip", null);
0 голосов
/ 12 октября 2011

Очень быстро и грязно

string a = "backup-2011-10-12_17-16-51.zip";
string g = a.Replace("backup-", string.Empty);
string k = g.Remove(g.IndexOf("_"));
0 голосов
/ 12 октября 2011

Если вы можете ожидать, что этот точный формат все время будет работать, то

 string a = "backup-2011-10-12_17-16-51.zip";
 var temp = a.Replace("backup-", String.Empty);
 temp = temp.Substring(0, temp.IndexOf('_'));
...