سؤال

لا أعرف ما هو الخطأ في السلسلة التالية:

"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)". أو ببساطة اترك أسماء تقاريرك بدون مسافات.

سأختار هذا الأخير ، لكنني أعارض بشكل أساسي المساحات في أسماء الملفات - فهي تصنع نصوصًا بسيطة أكثر من ذلك بكثير للكتابة :-)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top