在String.Format中使用变量作为格式字符串,当它包含\ n时

时间:2014-05-28 13:44:17

标签: c# .net

我想从文件中读取一行,并使用该行作为字符串的格式说明符。

文件中的行包含换行符转义序列\ n。所以看起来像这样:

Hello{0}\n\nWelcome to the programme

我想在这样的情况下使用它:

string name_var = "Steve";    
string line = ReadLineFromFile();
string formatted_line = String.Format(line, name_var);

不幸的是,结果如下:

  

嗨Steve \ n \ n欢迎加入该计划

我希望它看起来像:

  

嗨,史蒂夫

     

欢迎使用该计划

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

在C#程序中使用\n等转义序列时,编译器会处理该字符串,并将相应的不可打印字符的代码插入到字符串文字中。

当您从文件或其他导入源中读取一行时,处理转义序列将成为您的程序的责任。没有内置的方法。如果你想要的只是\n,你可以使用简单的

formatString = formatString.Replace("\\n", "\n");

如果您想支持其他转义序列,例如UNICODE字符的转义序列,您可以use solutions from answers to this question

答案 1 :(得分:2)

将字符串中的\n替换为换行符说明符,如下所示:

string name_var = "Steve"; 

string line = ReadLineFromFile();
line = line.Replace("\\n", Environment.NewLine);

string formatted_line = String.Format(line, name_var);