例如在richTextBox中我有文字:
Hello world
Hello hi
Hi all
现在我想用这种格式读取此文本,包括空行/ s,然后将相同文本写回同一文件,有或没有删除文本或添加文本等更改。
例如,如果我删除all,那么要回写的文本将采用以下格式:
Hello world
Hello hi
Hi
没有全部 或
Hello world
Hello hi
Hi all everyone
所以现在它会写相同的文字,但是每个人都会保留格式。
我尝试了这个,但这增加了太多以前没有的空行和空格:
var lines = richTextBox1.Text.Split('\n');
File.WriteAllLines(fileName, lines);
然后我尝试了:
var text = richTextBox1.Text;
File.WriteAllText(fileName, text);
这会在文件中写入带有更改的相同文本,但它没有保留将文本写入文件的格式作为一行。
答案 0 :(得分:0)
您必须将“\ n”替换为“\ r \ n”
var text = richTextBox1.Text;
text = text.Replace("\n", "\r\n");
File.WriteAllText(fileName, text);
答案 1 :(得分:0)
嗯,这里有几个选项,其中没有一个涉及拆分文本。
注意:以下所有代码都使用将文件路径作为字符串的私有变量:
public partial class Form1 : Form
{
private const string filePath = @"f:\public\temp\temp.txt";
第一个是使用\r\n
属性以及Text
和File.ReadAllText
保存所有文字(包括File.WriteAllText
字符):
// Load text on Form Load
private void Form1_Load(object sender, EventArgs e)
{
if (File.Exists(filePath))
{
richTextBox1.Text = File.ReadAllText(filePath);
}
}
// Save text on button click
private void button1_Click(object sender, EventArgs e)
{
File.WriteAllText(filePath, richTextBox1.Text);
}
如果您想逐行执行此操作,可以使用File.ReadAllLines
和File.WriteAllLines
以及Lines
的{{1}}属性:
RichTextBox
最后,您可以使用// Load text on Form Load
private void Form1_Load(object sender, EventArgs e)
{
if (File.Exists(filePath))
{
richTextBox1.Lines = File.ReadAllLines(filePath);
}
}
// Save text on button click
private void button1_Click(object sender, EventArgs e)
{
File.WriteAllLines(filePath, richTextBox1.Lines);
}
类的内置SaveFile
和LoadFile
方法。此方法将元数据写入文件,因此如果您在记事本中打开它,您将看到一些包含各种格式信息的其他字符。因此,我在RichTextBox
的调用周围添加了try/catch
块,因为如果文件格式不正确,它将抛出异常,然后我回过头来加载{{1} }}:
LoadFile