La concatenación de cadenas no parece que el trabajo en C #
-
21-09-2019 - |
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?
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: -)