使用变量作为string中的格式字符串.格式,当它包含 时

本文关键字:格式 字符串 包含 变量 string | 更新日期: 2023-09-27 18:05:39

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

文件中的行包含一个换行字符转义序列'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欢迎来到我们的节目

而我希望它看起来像:

你好史蒂夫

欢迎来到我们的节目

任何想法?

使用变量作为string中的格式字符串.格式,当它包含
时

当您在c#程序中使用转义序列(如'n)时,编译器会处理字符串,并将相应的不可打印字符的代码插入到字符串文字中。

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

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

如果您希望支持其他转义序列,例如UNICODE字符的转义序列,则可以使用此问题的答案中的解决方案。

用换行符替换字符串中的'n:

string name_var = "Steve"; 
string line = ReadLineFromFile();
line = line.Replace("''n", Environment.NewLine);
string formatted_line = String.Format(line, name_var);