如何将一个本地字符串作为变量传递到另一字符串的中间? .NET C#

时间:2018-08-28 18:16:10

标签: c# .net

在下面的示例中,如何使用qnaResult的名称更改本地QNARESULTHERE.json文件?

public async Task ITSupportIntent(IDialogContext context, LuisResult result)
{
    var qnaResult = itKB.GetAnswer(result.Query);
    if (qnaResult.StartsWith("CARD"))
    { 
        var reply = context.MakeMessage();            
        try
        {
            string json = File.ReadAllText(HttpContext.Current.Request.MapPath("~\\AdaptiveCards\\QNARESULTHERE.json"));

对不起,这个问题到处都是。 内容: 我需要的实际变量是我认为在此处引用的QnAAnswer:Integrate QnA Maker and LUIS to distribute your knowledge base

2 个答案:

答案 0 :(得分:2)

目前尚不清楚您要从结果中获取什么值,但是假设LuisResult上具有FileName属性,例如,您可以使用字符串插值(自C#起可用) 7),像这样:

string relativePath = $"~\\AdaptiveCards\\{result.FileName}.json";

您可能还会发现@样式的逐字字符串语法在这里效果更好,因为这意味着您不必转义反斜杠:

string relativePath = $@"~\AdaptiveCards\{result.FileName}.json";

如果您使用的是较旧版本的C#,则还可以使用string.Format或仅使用普通的旧字符串连接:

string relativePath = string.Format(@"~\AdaptiveCards\{0}.json", result.FileName);
string relativePath = @"~\AdaptiveCards\" + result.FileName + ".json";

无论您选择哪种方式,您当然都希望像过去一样传递结果值。

string json = File.ReadAllText(HttpContext.Current.Request.MapPath(relativePath));

答案 1 :(得分:2)

您可以像这样使用string.Format()

string json = File.ReadAllText(HttpContext.Current.Request.MapPath(string.Format(@"~\AdaptiveCards\{0}.json", qnaResult));

以上假设qnaResult是包含所需文件名的字符串。如果它是一个类实例,则使用包含文件名的适当实例属性。