C# 我应该有异常阻止用户在字符串中输入例如{0}或{2}吗

C# 我应该有异常阻止用户在字符串中输入例如{0}或{2}吗,c#,C#,就像今天我发现这样的事情会发生。我将值直接放在字符串中,但假设是用户放的更新的示例: int age = 21; // Users gives age 21 string s1 = "John {0}"; // Users gives name john and inputs this too {0} Console.WriteLine(s1, age); // Me wanting to show his name along with the {0} and the ag

就像今天我发现这样的事情会发生。我将值直接放在字符串中,但假设是用户放的更新的示例

   int age = 21; // Users gives age 21
   string s1 = "John {0}"; // Users gives name john and inputs this too {0}

   Console.WriteLine(s1, age); // Me wanting to show his name along with the {0} and the age

Output is :John 21
Outpout wanted is John {0} 21
如果你称之为:

Console.WriteLine("{0} {1}", "John {0}", 21);
(此处,
“{0}{1}”
是您提供的格式,而不是用户输入的格式。)

输出将是:

John {0} 21
通过格式化用户输入的数据,大括号不会被视为特殊的

在代码中,您可以将其称为:

Console.WriteLine("{0} {1}", s1, age);
如果你称之为:

Console.WriteLine("{0} {1}", "John {0}", 21);
(此处,
“{0}{1}”
是您提供的格式,而不是用户输入的格式。)

输出将是:

John {0} 21
通过格式化用户输入的数据,大括号不会被视为特殊的

在代码中,您可以将其称为:

Console.WriteLine("{0} {1}", s1, age);


但这正是
控制台.WriteLine的超负荷功能的作用所在?如果在您调用重载时用户将
{0}
放入字符串中,您希望输出是什么?我希望它显示Hello{0}。那么为什么要传递
number
?如果您不希望它自动使用额外信息格式化字符串,请不要调用使用额外信息格式化字符串的重载
Console.WriteLine(s1)
将愉快地输出
Hello{0}
我认为您需要使用不同的输入/预期输出来改进示例。现在真的不清楚你的问题到底是什么。但这就是超负荷的
Console.WriteLine
的目的吗?如果在您调用重载时用户将
{0}
放入字符串中,您希望输出是什么?我希望它显示Hello{0}。那么为什么要传递
number
?如果您不希望它自动使用额外信息格式化字符串,请不要调用使用额外信息格式化字符串的重载
Console.WriteLine(s1)
将愉快地输出
Hello{0}
我认为您需要使用不同的输入/预期输出来改进示例。现在真的不清楚你的问题到底是什么。我不能这样做,因为我不知道字符串的值是什么,因为用户实际输入了值,所以我无法知道他是否弄错了,并将{0}与他的名字一起添加。@GeorgeOscStephan这个答案意味着你不必关心他是否放入了
{0}
in或not。但是如何调用
Console.WriteLine(“{0}{1}”,“John{0}”,21)当我不知道姓名或年龄时,或者你的意思是这与
控制台.WriteLine(“{0}{1}”,s1,年龄)相同是,Console.WriteLine(“{0}{1}”,s1,年龄);感谢您选择了最佳答案。我不能这样做,因为我不知道字符串将具有什么值,因为用户实际输入了值,所以我无法知道他是否弄错并将{0}与他的名字一起添加。@GeorgeOscStephan此答案意味着您不必关心他是否放置了
{0}
in或not。但是如何调用
Console.WriteLine(“{0}{1}”,“John{0}”,21)当我不知道姓名或年龄时,或者你的意思是这与
控制台.WriteLine(“{0}{1}”,s1,年龄)相同是,Console.WriteLine(“{0}{1}”,s1,年龄);谢谢你选择了最好的答案。