我使用c#,visual studio 2017,winforms和 我在使用从文本文件中加载一些文本的组合框时出现问题,当我从组合框中选择另一行文本时,会在那里添加换行符(\ r \ n),它看起来像是'有点看不见或更好说,它看起来像一个换行符(\ n)。
这是有问题的组合框和不可见的换行符(\ r)。 https://i.stack.imgur.com/Xhymg.png
当我调试应用程序时,我可以看到\ r \ n在该行文本之后添加。 https://i.stack.imgur.com/km4F3.png
我在保存文本时尝试使用Encoding.Unicode,但无济于事。
//This is how I save text to a file
private void SaveVarNameToFile()
{
using (var writer = File.AppendText("savedVarName.txt"))
{
writer.Write(comboBox1.Text, Encoding.Unicode);
}
}
//This is how I load the text to combobox
private void LoadStrTextFromFile(string fileName, ComboBox cb)
{
if (!File.Exists(fileName))
return;
using (StreamReader reader = new StreamReader(fileName))
{
string x = reader.ReadToEnd();
string[] y = x.Split('\n');
foreach (string s in y)
{
cb.Items.Add(s);
}
reader.Close();
}
}
文本文件的内容:
BOOST_ROOT
NUMBER_OF_PROCESSORS
OS
PROCESSOR_LEVEL
我很难弄清楚如何删除那个讨厌的小东西。也许这是一个简单的解决方案。 如果有人可以帮我找到方法或删除它或修改代码以便它不会加载\ r \ n,我将非常感激。谢谢。
答案 0 :(得分:0)
Windows使用\ r \ n标记文本行的结尾。 * NIX和Mac使用不同的标记。您可以看到不同系统如何处理此here。
我建议不要手动处理行分割,而是建议使用内置功能(例如File.ReadLines()):
private void LoadStrTextFromFile(string fileName, ComboBox cb)
{
if (!File.Exists(fileName))
return;
foreach (string line in File.ReadLines(fileName))
cb.Items.Add(line);
}
答案 1 :(得分:0)
我的方法
// remember to use double back slash on the path
string[] text = System.IO.File.ReadAllLines("C:\\test.txt").Where(line => !string.IsNullOrWhiteSpace(line)).Distinct().ToArray(); // read the file into a string array with removing the duplicates and empty lines
comboBox1.Items.AddRange(text); // finally fill in the combobox with the array