如何在C#逐字字符串中替换user_con为变量且避免报错?
解决C#逐字字符串替换变量的问题
方法1:使用字符串插值(推荐)
将逐字字符串的@与字符串插值符号$结合(顺序可写为$@或@$),用{变量名}替换硬编码的内容即可。注意逐字字符串中的大括号需要用双写{{}}来转义,变量占位符则用单写{}:
string username = "你的用户名变量"; string password = "你的密码变量"; var data = $@"{{""AuthParameters"" : {{ ""USERNAME"" : ""{username}"", ""PASSWORD"" : ""{password}"" }}, ""AuthFlow"" : ""USER_PASSWORD_AUTH"", ""ClientId"" : ""952m5bj"" }}";
方法2:使用string.Replace()方法
如果不想用字符串插值,直接调用字符串的替换方法,把固定文本替换为变量值:
string username = "你的用户名变量"; string password = "你的密码变量"; var data = @"{""AuthParameters"" : { ""USERNAME"" : ""user_con"", ""PASSWORD"" : ""passw_con"" }, ""AuthFlow"" : ""USER_PASSWORD_AUTH"", ""ClientId"" : ""952m5bj"" }".Replace("user_con", username).Replace("passw_con", password);
方法3:使用JSON序列化(更规范的实现)
如果是构造JSON数据,更推荐通过类序列化的方式实现,避免手动拼接字符串的转义问题,也更易维护:
public class AuthData { public AuthParameters AuthParameters { get; set; } public string AuthFlow { get; set; } public string ClientId { get; set; } } public class AuthParameters { public string USERNAME { get; set; } public string PASSWORD { get; set; } } // 实例化并序列化 var authData = new AuthData { AuthParameters = new AuthParameters { USERNAME = "你的用户名变量", PASSWORD = "你的密码变量" }, AuthFlow = "USER_PASSWORD_AUTH", ClientId = "952m5bj" }; var data = JsonSerializer.Serialize(authData);
内容的提问来源于stack exchange,提问作者Sebas
相关产品推荐
相关产品推荐

