Конкатенация строк, похоже, не работает в C#
-
21-09-2019 - |
Вопрос
Я не знаю, что не так со следующей строкой:
"Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"
Я не могу получить объединенную строку.Я получаю Report(29-Dec-2009
.Вот и все, и
остальное исключается из строки.
В чем же причина?
Решение
Попробуй это:
string filename =
String.Format(
"Report({0:dd-MMM-yyyy} to {1:dd-MMM-yyyy})",
System.DateTime.Now, System.DateTime.Now.AddMonths(-1));
Редактировать: Поскольку в вашем окно загрузки у вас получилось, что ваше имя файла разбито на первый пробел, вы могли бы попробовать ОДИН из этих:
filename = HttpUtility.UrlEncode(filename); // OR
filename = """" + filename + """";
Похоже, некоторые браузеры не очень хорошо обрабатывают пробелы: Имена файлов с пробелами усекаются при загрузке.Пожалуйста, проверьте это, вы можете загружать другие имена файлов с пробелами на других сайтах.
Другие советы
Вам нужно присвоить это чему-то:
string s = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"
Обновить:Я только что увидел ваше обновление по этому вопросу.Как вы отображаете строку?Я предполагаю, что вы отображаете его в графическом интерфейсе, а надпись слишком короткая, чтобы отобразить полный текст.
Попробуй это:
string newstring =
string.Format(
"Report ({0} to {1})",
System.DateTime.Now.ToString("dd-MMM-yyyy"),
System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
);
Чему вы присваиваете результат?Было бы проще читать код, если бы вы использовали string.Формат
Вы ничему не присваиваете объединенный результат, поэтому не можете его использовать:
string myConcatenated = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + ")";
Используя этот код...
string test = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " +
System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")";
Я увидел следующий результат.
Report(29-Dec-2009 to 29-Nov-2009)
Возможно, позже строка будет усечена.Убедитесь, что вы установили точку останова сразу после запуска этого кода и проверяете значение переменной, которой она присвоена (test в моем случае).
Если, как в вашем предыдущий вопрос, Если вы используете это значение для создания файла, возможно, проблема в пробеле перед "to".Попробуйте использовать:
"Report("
+ System.DateTime.Now.ToString("dd-MMM-yyyy")
+ "To"
+ System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
+ ")"
вместо этого и посмотрите, исправит ли это проблему.
Если это делает исправьте это, вам, вероятно, нужно будет либо выяснить, как заключить в кавычки все имя файла, чтобы оно не рассматривалось как три отдельных аргумента, "Report(29-Dec-2009"
, "to"
и "29-Nov-2009)"
.Или просто оставьте названия ваших отчетов без пробелов.
Я бы выбрал последнее, но тогда я принципиально против пробелов в именах файлов - они значительно усложняют написание простых скриптов :-)