我需要在一个字符串中转换这一行,因为我的方法“DisplayMessage”只接受1个参数,所以我该怎么做呢?
_userOptions.DisplayMessage("\nFile Generated: " +
BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)) +
"\nTime Elapsed: {0} minute(s) {1} second(s)",
timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10 + "\n");
答案 0 :(得分:3)
看起来您的DisplayMessage方法不允许使用字符串格式。尝试将整个内容(DisplayMessage
的括号内的所有内容)放在String.Format()
方法中。这将使它成为一个字符串,仍然允许您传递的多个参数。
答案 1 :(得分:1)
试试这个:
string s= String.Format(
"\nFile Generated: " +
BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)) +
"\nTime Elapsed: {0} minute(s) {1} second(s) {2} msec(s)\n",
timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10);
_userOptions.DisplayMessage(s);
答案 2 :(得分:1)
var msg = String.Format("\nFile Generated: {0}\nTime Elapsed: {1} minute(s) {2} second(s)\n", BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)), timeSpan.Minutes, timeSpan.Seconds);
_userOptions.DisplayMessage(msg);
应该这样做......
答案 3 :(得分:1)
我想你想要use String.Format
。这需要一个字符串,并用参数索引替换{#}
。
示例:
String.Format("Hi {0}, welcome to Stack Overflow!", "ale");
答案 4 :(得分:1)
您的字符串表示您要调用static Format
method on the String
class,如下所示:
_userOptions.DisplayMessage(string.Format(
"\nFile Generated: {0}\nTime Elapsed: {1} minute(s) {2} second(s)\n",
BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)),
timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10));
但是,这会给你一个问题,因为你有更多的参数,而不是字符串中的占位符。
此外,鉴于有关使用“\ n”作为新行分隔符的注释,除非您特别需要该特定格式(并且您似乎没有这样做,否则您并未表明您正在写入一个文件,或者数据转到外部系统的东西),最好使用Environment.NewLine
,你可以这样使用(注意,这仍然没有解决你有比你更多参数的事实)占位符:
_userOptions.DisplayMessage(string.Format(
"{0}File Generated: {1}{0}Time Elapsed: {2} minute(s) {3} second(s){0}",
Environment.NewLine,
BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)),
timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10));
答案 5 :(得分:1)
我认为这更优雅:
string message = string.Format("{0}File Generated: {1}{0}Time Elapsed: {2} minute(s) {3} second(s) {4} milliseconds{0}",
"\n", BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)), timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10);
_userOptions.DisplayMessage(message);
使用Format
,不需要在字符串上使用任何+
运算符。
答案 6 :(得分:1)
我认为,您可以使用StringBuilder
StringBuilder sb = new StringBuilder();
sb.Append("\n");
sb.Append("File Generated: ");
sb.Append(BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)));
sb.Append("\n");
sb.Append("Time Elapsed: ");
sb.Append(timeSpan.Minutes);
sb.Append(" minute(s)");
sb.Append(timeSpan.Seconds);
sb.Append(" second(s)");
sb.Append();
_userOptions.DisplayMessage(sb.ToString());
但我认为,你有一些错误:你有2个参数但实际上是3
答案 7 :(得分:0)
在下面找到。
string str = String.Format("\n" + "File Generated: " + BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)) + "\n" + "Time Elapsed: " + " {0} minute(s)" + " {1} second(s)", timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10 + "\n");
_userOptions.DiplayMessage(str);
希望这有帮助。
答案 8 :(得分:0)
而不是{0}和{1},只需直接使用您的参数:
_userOptions.DisplayMessage("\n" + "File Generated: " + BinaryWriter.GetBinaryFileName(filePath, Convert.ToInt32(logSelected)) + "\n" + "Time Elapsed:" + timeSpan.Minutes + "minute(s)" + timeSpan.Seconds + "second(s)" + timeSpan.Milliseconds / 10 + "\n");