لا يبدو أن تسلسل السلسلة يعمل في 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.format
أنت لا تقوم بتعيين النتيجة المتسلسلة لأي شيء ، لذلك لا يمكنك استخدامها:
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)
يمكن أن يتم اقتطاع السلسلة لاحقًا. تأكد من تعيين نقطة توقف مباشرة بعد تشغيل هذا الرمز وتحقق من قيمة المتغير الذي تم تعيينه إليه (اختبار في حالتي).
إذا ، كما في الخاص بك السؤال السابق, ، أنت تستخدم هذه القيمة لإنشاء ملف ، فقد يكون ذلك هو المساحة قبل "إلى" التي تسبب المشكلة. حاول استخدام:
"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)"
. أو ببساطة اترك أسماء تقاريرك بدون مسافات.
سأختار هذا الأخير ، لكنني أعارض بشكل أساسي المساحات في أسماء الملفات - فهي تصنع نصوصًا بسيطة أكثر من ذلك بكثير للكتابة :-)