C# 文字到字符串
我有一个文本作为文件中的字符串C# 文字到字符串,c#,.net,C#,.net,我有一个文本作为文件中的字符串 def s_CalculatePartiallyUsedTechPenalty(rate):\n total = min(rate,0)\n title = \"Partially Used Technology Penalty\" \n return RateItem(title,total,FinancialUniqueCode.PartiallyUsedTechPenalty,False) 读取文件时,文本明显如下所示: def s_Ca
def s_CalculatePartiallyUsedTechPenalty(rate):\n total = min(rate,0)\n title = \"Partially Used Technology Penalty\" \n return RateItem(title,total,FinancialUniqueCode.PartiallyUsedTechPenalty,False)
读取文件时,文本明显如下所示:
def s_CalculatePartiallyUsedTechPenalty(rate):\\n total = min(rate,0)\\n title = \\\"Partially Used Technology Penalty\\\" \\n return RateItem(title,total,FinancialUniqueCode.PartiallyUsedTechPenalty,False)
是否有干净的方法转换此字符串,以便文件中的值也是代码中字符串的实际值。换句话说,\n
例如是\n
而不是\\n
我知道我可以编写一个方法来替换所有适用的值,但我不想这样做,除非这是唯一的方法
编辑:回应吴宇森的回答。不,我没有困惑。我完全理解这种情况,但是我想将文字值“\n”转换为换行符。因此,它应该是新行,而不是\n的文本值
基本上与相反,如果无法修复文件写入代码,则可以通过以下方式解决此问题:
String.Replace(@"\\\", @"\");
String.Replace(@"\\", @"\");
或者,在这种情况下,如果您使用普通的未转换字符串
String.Replace(@"\\\""", "\"");
String.Replace(@"\\n", Environment.NewLine);
另外,还要考虑其他特殊字符,如\t
更新:
更好的方法是:
class Program
{
static void Main(string[] args)
{
var escaped = @"def s_CalculatePartiallyUsedTechPenalty(rate):\n total = min(rate,0)\n title = \""Partially Used Technology Penalty\"" \n return RateItem(title,total,FinancialUniqueCode.PartiallyUsedTechPenalty,False)";
var unescaped = Regex.Unescape(escaped);
Console.WriteLine(unescaped);
}
}
你把自己弄糊涂了。文件中保存的字符串与通过读取文件获得的字符串变量中保存的字符串完全相同 可能您正在使用Visual Studio检查字符串(即,在代码处于调试模式时使用“监视”窗口或仅将鼠标悬停在变量上)。在这种情况下,Visual Studio将显示额外的斜杠,以指示字符串变量包含文字值“\n”而不是换行符 如果要消除监视窗口中的转义字符,可以将格式说明符
,nq
附加到变量名()
另请参见。是否可以执行
String.Replace(“\\n”,Environment.NewLine)
?“文本显然是这样的”。这对我来说并不明显。你是怎么读的,怎么打印的?吴约翰的答案是正确的,尽管有个胆小鬼在没有添加评论的情况下否决了它。文本“看起来像这样”在哪里?在档案里?在调试器中?在VS监视窗口中?这些字符串的显示方式都不一样。为了彻底起见,他可能想替换。但你是对的,他真的应该修改生成文件的代码。好吧,为什么否决?我有同样的问题,因为在我看来你的答案是正确的。