c#.NET和sprintf语法
这段代码如何翻译成C#,特别是c#.NET和sprintf语法,c#,.net,C#,.net,这段代码如何翻译成C#,特别是sprintf如何在C#中实现 我希望看到“如果用户未登录”。CheckStatus()为false整个printf函数族在C中被替换为。例如,Console.WriteLine()中也公开了相同的接口 请检查,以下是使用它的代码版本: string output = "The user {0} logged in"; string loggedIn = "is"; string loggedOut = "isn't"; if (TheUser.CheckStat
sprintf
如何在C#中实现
我希望看到
“如果用户未登录”
。CheckStatus()
为false
整个printf
函数族在C中被替换为。例如,Console.WriteLine()
中也公开了相同的接口
请检查,以下是使用它的代码版本:
string output = "The user {0} logged in";
string loggedIn = "is";
string loggedOut = "isn't";
if (TheUser.CheckStatus())
{
output = string.Format(output, loggedIn);
}
else
{
output = string.Format(output, loggedOut);
}
return output;
或者更简单地说:(使用三元表达式)
营救
string output = "The user {0} logged in";
string loggedIn = "is";
string loggedOut = "isn't";
output = (TheUser.CheckStatus() ? string.Format(output, loggedIn) :
string.Format(output, loggedOut));
return output;
另请参阅这篇关于
编辑:较短
return string.Format(output, (TheUser.CheckStatus() ? loggedIn : loggedOut));
如果要继续使用%s,%d
string sprintf(string input,params object[] inpVars)
{
int i=0;
input=Regex.Replace(input,"%.",m=>("{"+ i++/*increase have to be on right side*/ +"}"));
return string.Format(input,inpVars);
}
你现在可以做了
sprintf("hello %s..Hi %d","foofoo",455);
使用C#6,您可以使用formattable字符串:
if (TheUser.CheckStatus())
{
output = $"The user {loggedIn} logged in"
}
字符串中的{loggedIn}
是您定义的变量名
另外,在花括号内有intellisense来选择变量名。Anirudha已经编写了解决方案,但我无法添加注释,因此我将其作为答案发布。它需要
inti=-1代码>否则将引发异常
string sprintf(string input,params object[] inpVars)
{
int i=-1;
input=Regex.Replace(input,"%.",m=>("{"+ ++i +"}"));
return string.Format(input,inpVars);
}
斯普林特。。。听我的,否则我就给你换尿布!!喜欢速记if语句。谢谢你的语法:)@JamesT-yes非常有用,为备选方案做了简短的感谢。很高兴知道!我需要:),谢谢。。也不要忘记使用System.Text.RegularExpressions包含
@semoLi在编辑中建议它应该是input=Regex.Replace(input,“%”,m=>(“{+i++/*递增必须在右边*/+”)代码>似乎是正确的,与一行比较或作为一行:返回string.Format(“用户{0}登录”,用户.CheckStatus()?“是”:“不是”)代码>是否可以“加载”这样的字符串?例如,从其他地方获取字符串,然后以某种方式在代码中使用它?
sprintf("hello %s..Hi %d","foofoo",455);
if (TheUser.CheckStatus())
{
output = $"The user {loggedIn} logged in"
}
string sprintf(string input,params object[] inpVars)
{
int i=-1;
input=Regex.Replace(input,"%.",m=>("{"+ ++i +"}"));
return string.Format(input,inpVars);
}