Question

Je ne sais pas quel est le problème avec la chaîne suivante:

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

Je ne peux pas obtenir la chaîne concaténée. Je reçois Report(29-Dec-2009. C'est tout et le reste est laissé hors de la chaîne.

Quelle est la raison?

Était-ce utile?

La solution

Essayez ceci:

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

EDIT: Depuis votre télécharger vous avez obtenu votre nom de fichier brisé dans le premier espaces, vous pourriez essayer un de ces derniers:

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

Semble certains navigateurs ne fonctionne pas très bien poignées espaces blancs: avec des espaces Les noms de fichiers sont tronqués à télécharger . S'il vous plaît vérifier vous pouvez télécharger d'autres espaces dans les noms de fichiers avec d'autres sites.

Autres conseils

Vous devez attribuer à quelque chose:

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

Mise à jour: Je viens de voir votre mise à jour à la question. Comment allez-vous afficher la chaîne? Je devine que vous affichez dans une interface graphique et l'étiquette est trop courte pour afficher le texte complet.

Essayez ceci:

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

Qu'est-ce que vous assignez le résultat? Il serait plus facile de lire le code si vous avez utilisé string.Format

Vous n'êtes pas assignez le résultat concaténé à quoi que ce soit, ne peut donc pas l'utiliser:

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

En utilisant ce code ...

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

J'ai vu le résultat suivant.

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

Il se pourrait que la chaîne est tronquée par la suite. Assurez-vous que vous définissez un droit après ce point d'arrêt code est exécuté et vérifier la valeur de la variable à laquelle il est affecté (test dans mon cas).

Si, dans votre question précédent , vous utilisez cette valeur pour créer un fichier, il se peut que c'est l'espace avant « pour » qui cause le problème. Essayez d'utiliser:

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

au lieu et voir si cela résout le problème.

Si ce Finalité fixer, vous aurez probablement besoin soit comprendre comment citer le nom complet du fichier afin qu'il soit pas traité comme les trois arguments distincts, "Report(29-Dec-2009", "to" et "29-Nov-2009)". Ou tout simplement laisser vos rapports noms sans espaces.

Je choisis ce dernier mais je suis fondamentalement opposé à des espaces dans les noms de fichiers - ils font des scripts simples beaucoup plus difficile à écrire: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top