将多行字符串转换成一行,然后将这一行还原成原来的字符串(多行),
转换后的多行和转换前的内容必须完全相同
a测试文本1
多行文本
AAA
BBB
CCC
DDD
EEE
b转换成单行AAA BBB CCC DDD EEE 全在一行上
c然后把c 单行转换和a这个多行一样 内容必须一样
因为用INI保存信息
INIFILES 保存信息格式是一个字符对应一个值
[config]
a = 这是文本的内容
b = 这是文本的内容
所以对于多行文本像 文本为多行的textBox1.Text,就只能保存第一行
1 现在要保存 所有textBox1.Text里面的内容到一行
2 读取这行的内容的时候把它转换成 textBox1.Text原来的样子,即多行的样子
之间我是用Replace替换的感觉非常完美
//多行变单行
textBox1.Text = textBox1.Text.Replace("\n", @"\r\n");
//单行变多行
textBox1.Text = textBox1.Text.Replace(@"\r\n", "\n");
但如果文本中包含\r\n则就转换过来的内容就不一样了
以下是测试文本
AAA\r\nBBB\r\nCCC\r\nDDD\r\nEEE
AAA\r\nBBB\r\nCCC\r\nDDD\r\nEEE
AAA\r\nBBB\r\nCCC\r\nDDD\r\nEEE
用替换的方法字符串中的\r\n消失了
将\n修改为\r\n
textBox1.Text = textBox1.Text.Replace("\r\n", @"\r\n");
textBox1.Text = textBox1.Text.Replace(@"\r\n", "\r\n");
不要使用\n或者\r\n这种硬文本,因为有的地方是\n就行,有的必须\r\n,还有别的其他地方又不一样;使用Environment.Newline,会自动再不同地方生成对应的换行符号
不用替换的方式要牺牲TXT的可读性
//多行变单行
textBox1.Text =textBox1.Text.ToHexString();
//单行变多行
textBox1.Text = textBox1.Text.FromHexString();
public static string ToHexString(this string str)
{
string result = "";
foreach (byte i in Encoding.UTF8.GetBytes(str)) {
result += i.ToString("x2");
}
return result;
}
public static string FromHexString(this string str) {
byte[] result = new byte[str.Length / 2];
for (int i = 0; i < str.Length/2; i++) {
result[i] = Convert.ToByte(str.Substring(i * 2, 2), 16);
}
return Encoding.UTF8.GetString(result);
}