Frage

Ich weiß nicht, was mit der folgenden Zeichenfolge falsch ist:

"Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + "  to  " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") +  ")"

Ich kann die verkettete Zeichenfolge bekommen. Ich erhalte Report(29-Dec-2009. Das ist alles, und der Rest wird aus dem String links aus.

Was ist der Grund?

War es hilfreich?

Lösung

Versuchen Sie diese:

string filename = 
    String.Format(
        "Report({0:dd-MMM-yyyy} to {1:dd-MMM-yyyy})",
         System.DateTime.Now, System.DateTime.Now.AddMonths(-1));

EDIT: Da in der Download-Box Sie haben Ihre Dateinamen in der ersten Leerzeichen gebrochen, Sie könnten einer von ihnen, um zu versuchen:

filename = HttpUtility.UrlEncode(filename); // OR
filename = """" + filename + """";

Es scheint einigen Browser nicht Griffe Whitespaces sehr schön: Dateinamen mit Leerzeichen beim Herunterladen abgeschnitten werden. Überprüfen Sie es bitte Sie können auch in anderen Websites anderen Dateinamen mit Leerzeichen zum Download bereit.

Andere Tipps

Sie müssen es etwas zuweisen:

string s = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"

Update: Ich habe gerade gesehen, das Update auf die Frage. Wie werden die Anzeigen Sie die Zeichenfolge? Ich vermute, dass Sie es in einer GUI und das Etikett ist zu kurz, sind die Anzeige des vollständigen Text angezeigt werden soll.

Versuchen Sie diese:

string newstring = 
  string.Format(
                "Report ({0} to {1})", 
                System.DateTime.Now.ToString("dd-MMM-yyyy"), 
                System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
               );

Was zuweisen Sie das Ergebnis? Es wäre einfacher, den Code zu lesen, wenn Sie string.Format verwendet

Sie sind nicht das verkettete Ergebnis zu etwas zuweisen, so kann es nicht verwendet werden:

string myConcatenated = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + ")";

Mit diesem Code ...

string test = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " +
                   System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")";

Ich sah das folgende Ergebnis.

Report(29-Dec-2009 to 29-Nov-2009)

Es könnte sein, dass die Zeichenfolge abgeschnitten wird später. Stellen Sie sicher, dass Sie einen Haltepunkt rechts gesetzt, nachdem dieser Code ausgeführt wird, und prüfen Sie den Wert der Variablen, der sie zugeordnet ist (Test in meinem Fall).

Wenn, wie in Ihrer vorherigen Frage Sie diesen Wert verwenden, um eine Datei zu erstellen, kann es sein, dass es der Raum ist vor „auf“, die das Problem verursacht. Versuchen Sie zu verwenden:

"Report("
    + System.DateTime.Now.ToString("dd-MMM-yyyy")
    + "To"
    + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
    +  ")"

statt und sehen, ob das behebt es.

Wenn das hat es beheben, müssen Sie wahrscheinlich zu beiden herauszufinden, wie die gesamten Dateinamen zu zitieren, so ist es nicht als drei separate Argumente behandelt, "Report(29-Dec-2009", "to" und "29-Nov-2009)". Oder lassen Sie einfach Ihre Berichte Namen ohne Leerzeichen ein.

Ich würde letzteres wählen, aber dann bin ich im Grunde zu Leerzeichen in Dateinamen im Gegensatz - sie machen einfache Skripte so viel schwieriger zu schreiben: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top