Pregunta

No sé qué le pasa a la siguiente cadena:

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

No se puede obtener la cadena concatenada. Me estoy haciendo Report(29-Dec-2009. Eso es todo y el resto se queda fuera de la cadena.

¿Cuál es la razón?

¿Fue útil?

Solución

Prueba esto:

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

EDIT: Dado que en su descarga que recibió su nombre de archivo roto en el primer espacio en blanco, que pudo para probar uno de estos:

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

Parece que algunos navegadores no tiene espacios en blanco mangos muy bien: Los nombres de archivo con espacios se truncan a descarga. Por favor, compruebe que se puede descargar otros nombres de archivo con espacios en blanco en otros sitios.

Otros consejos

Es necesario asignar a algo:

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

Actualización: acabo de ver su actualización a la pregunta. ¿Cómo estás mostrando la cadena? Supongo que usted está viendo en una interfaz gráfica de usuario y la etiqueta es demasiado corta para visualizar el texto completo.

Prueba esto:

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ás asignando el resultado a? Sería más fácil para leer el código si se ha utilizado string.Format

No está asignando el resultado concatenado a nada, por lo que no se puede utilizar:

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

El uso de este código ...

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

vi el siguiente resultado.

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

Podría ser que la cadena se trunca después. Asegúrese de que se establece un derecho de punto de interrupción después de ejecutar este código y comprobar el valor de la variable a la que se le asigna (prueba en mi caso).

Si, como en su pregunta anterior , que está utilizando este valor para crear un archivo, puede ser que sea el espacio antes de "a" que está causando el problema. Trate de usar:

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

en lugar y ver si se soluciona el problema.

Si eso hace solucionarlo, es probable que tengas, ya sea a la manera de citar el nombre completo del archivo así que no es entendido como el tres argumentos separados, "Report(29-Dec-2009", "to" y "29-Nov-2009)". O simplemente dejar sus nombres informes sin espacios.

Yo elegiría esta última, pero entonces yo estoy fundamentalmente opuestas a los espacios en los nombres de archivo - hacen scripts simples mucho más difícil de escribir: -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top