【问题标题】:C#: Inserting Variable into Text FileC#:将变量插入文本文件
【发布时间】:2015-07-24 02:15:44
【问题描述】:

总结:我想将变量插入文本文件。我试着环顾四周,但无济于事。也许我正在使用错误的关键词进行搜索。我知道将变量插入字符串,很简单:

string str1 = "hello {0}";
string str2 = "world";
string final = string.Format(str1, str2); //Output should be "hello world"

按照同样的思路,我做了一个str1的文本文件,将文本文件加载到一个字符串变量中,重复上述过程。

str1.txt:

hello {0}

代码:

string str1 = System.IO.File.ReadAllText(@"..\..\str1.txt"); //Should load the text file as a string
string str2 = "world"
string final = string.Format(str1, str2); //Output should be "hello world"

现在,我在调用 string.Format 时收到“输入字符串格式不正确”错误,我不太确定原因。

编辑:我猜我没有提供足够的信息。对不起!我试图插入变量的文本文件是一个类的文本文件,其中 {0}、{1}、... 插入到各个点。

【问题讨论】:

  • 调试并检查str1 的值

标签: c# string text-files


【解决方案1】:

我在我的机器上运行了您的代码示例,它按照您的预期运行。我建议您查看 str1.txt 文件的内容并确认路径正确解析。如果这些都不起作用,请查看文件的编码。

还要注意文件中的 {} 杂散字符。通过将它们加倍或替换您的代码来逃避它们

string str1 = "hello {0}";
string str2 = "world";
string final = str1.replace("{0}", str2); //Output should be "hello world"

【讨论】:

  • 嗯很有趣..我已经完成了 Console.WriteLine 来打印变量并且它打印正确。文本文件虽然比较大,但我需要插入多个变量。你知道文本文件中的多行或多个变量是否会影响输出?
  • 多行应该没问题。请注意文件中的 {} 杂散字符。通过将它们加倍来逃脱它们。
  • 哦,这可能是问题所在。我正在尝试为一个类创建一个生成器。你是说类函数和变量的括号会搞乱变量的插入方式?
  • 是的,这绝对是问题所在。最简单的解决方案可能是执行 string.replace("{0}", str2)
【解决方案2】:

ReadAllText() 可能会给你一个字符串文字,所以{0} 实际上是\{0\} 并且不会按预期运行。然后string.Format() 会抛出异常,因为第一个字符串没有放置第二个参数的有效位置。

【讨论】:

    【解决方案3】:

    确保 str1 中有一个占位符标记。它需要{0} 才能知道将 str2 插入 str1 的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 2011-11-28
      • 2018-01-01
      • 1970-01-01
      相关资源
      最近更新 更多