gpt4 book ai didi

c# - 如何将文件读入保留 CR/LF 的字符串?

转载 作者:太空狗 更新时间:2023-10-29 20:00:00 26 4
gpt4 key购买 nike

如果我问“如何将文件读入字符串”这个问题,答案将是显而易见的。但是,这里有一个问题,保留了 CR/LF

问题是,File.ReadAllText 去除了那些字符。 StreamReader.ReadToEnd 刚刚为我将 LF 转换为 CR,这导致了长时间的调查,我在非常明显的代码中发现了 bug ;-)

所以,简而言之,如果我有包含 foo\n\r\nbar 的文件,我想获取 foo\n\r\nbar(即,正是相同的内容),而不是 foo barfoobarfoo\n\n\nbar。 .Net空间有现成的使用方法吗?

结果应该始终是单个字符串,包含整个文件。

最佳答案

你确定那些方法是剥离你角色的罪魁祸首吗?

我试图编写一个快速测试; StreamReader.ReadToEnd 保留所有换行符。

string str = "foo\n\r\nbar";
using (Stream ms = new MemoryStream(Encoding.ASCII.GetBytes(str)))
using (StreamReader sr = new StreamReader(ms, Encoding.UTF8))
{
string str2 = sr.ReadToEnd();
Console.WriteLine(string.Join(",", str2.Select(c => ((int)c))));
}

// Output: 102,111,111,10,13,10,98,97,114
// f o o \n \r \n b a r

写入和读取临时文件时会获得相同的结果:

string str = "foo\n\r\nbar";
string temp = Path.GetTempFileName();
File.WriteAllText(temp, str);
string str2 = File.ReadAllText(temp);
Console.WriteLine(string.Join(",", str2.Select(c => ((int)c))));

看来您的换行符在其他地方丢失了。

关于c# - 如何将文件读入保留 CR/LF 的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com