c#.NET和sprintf语法

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

这段代码如何翻译成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.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);
}