Domanda

Non so che cosa è sbagliato con la seguente stringa:

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

Non riesco a ottenere la stringa concatenata. Io sono sempre Report(29-Dec-2009. Questo è tutto e il resto viene lasciato fuori dalla stringa.

Qual è il motivo?

È stato utile?

Soluzione

Prova questo:

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

Modifica Dal momento che nel Download avete ottenuto il vostro nome di file rotto nel primo spazio bianco, si potrebbe provare uno di questi:

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

Sembra alcuni browser non lo fa maniglie spazi bianchi molto bene: nomi di file con spazi vengono troncati al momento del download . Si prega di verificare che è possibile scaricare altri nomi di file con spazi in altri siti.

Altri suggerimenti

È necessario assegnare a qualcosa:

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

Aggiornamento: Ho appena visto l'aggiornamento alla domanda. Come stai visualizzando la stringa? Sto indovinando che si sta visualizzando in una GUI e l'etichetta è troppo breve per visualizzare il testo completo.

Prova questo:

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

Che cosa stai assegnando il risultato? Sarebbe più facile da leggere il codice se si è utilizzato string.Format

Non sta assegnando il risultato concatenato a nulla, quindi non può essere utilizzato:

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

Utilizzando questo codice ...

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

ho visto il seguente risultato.

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

E 'possibile che la stringa viene troncata in seguito. Assicurarsi che si imposta un punto di interruzione a destra dopo questo codice viene eseguito e controllare il valore della variabile a cui è assegnato (test nel mio caso).

Se, come nel tuo domanda precedente , si utilizza questo valore per creare un file, è possibile che sia lo spazio prima "a" che sta causando il problema. Prova ad utilizzare:

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

, invece, e vedere se questo risolve esso.

Se questo fa risolvere il problema, avrete probabilmente bisogno di uno capire come citare l'intero nome del file così non è trattato come il tre argomenti separati, "Report(29-Dec-2009", "to" e "29-Nov-2009)". O semplicemente lasciare i vostri nomi rapporti senza spazi.

sceglierei quest'ultima, ma poi sono fondamentalmente contrari agli spazi nei nomi dei file - fanno semplici script in modo molto più difficile da scrivere: -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top