字符串连接似乎在C#中不起作用

时间:2009-12-29 12:29:44

标签: c# string-concatenation

我不知道以下字符串有什么问题:

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

我无法获得连接字符串。我得到了Report(29-Dec-2009。这就是全部 剩下的就从字符串中消失了。

是什么原因?

7 个答案:

答案 0 :(得分:9)

试试这个:

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

编辑:因为在下载框中,您的文件名在第一个空格中被破坏,您可以尝试以下其中一个:

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

似乎有些浏览器不能很好地处理空格:Filenames with spaces are truncated upon download。请检查一下,您可以在其他网站下载带有空格的其他文件名。

答案 1 :(得分:3)

您需要将其分配给某些内容:

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

更新:我刚看到您对该问题的更新。你是如何显示字符串的?我猜你在GUI中显示它并且标签太短而不能显示完整的文本。

答案 2 :(得分:2)

试试这个:

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

答案 3 :(得分:1)

您将结果分配给哪些人?如果使用string.Format

,则更容易阅读代码

答案 4 :(得分:1)

您没有将连接结果分配给任何内容,因此无法使用它:

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

答案 5 :(得分:0)

使用此代码......

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

我看到了以下结果。

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

可能是字符串稍后被截断。确保在运行此代码后立即设置断点并检查分配给它的变量的值(在我的情况下测试)。

答案 6 :(得分:0)

如果在previous question中使用此值来创建文件,则可能是“to”之前的空格导致了问题。尝试使用:

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

而是看看是否修复了它。

如果 修复了它,你可能需要弄清楚如何引用整个文件名,这样它就不会被视为三个独立的参数"Report(29-Dec-2009",{{ 1}}和"to"。或者只是将报告名称保留为空格。

我会选择后者,但后来我从根本上反对文件名中的空格 - 它们使得简单的脚本更难写: - )