Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# /字斟句酌_C#_Filestream_Streamreader_Streamwriter - Fatal编程技术网

C# /字斟句酌

C# /字斟句酌,c#,filestream,streamreader,streamwriter,C#,Filestream,Streamreader,Streamwriter,所以,我正在制作一个“刽子手”游戏,用一个文字编辑器在游戏中输入你自己的文字。我有一个表单,它打开一个文本文件并在多行文本框中显示内容。之后,用户可以编辑文本框。如果按“保存”,文本框中的内容将保存到文本文件中 现在,无论是阅读还是写作,一切都很顺利。但是现在如果我想玩我的文字,它总是比我输入的文字长。通过调试,我发现我的程序在每个单词后面都添加了“/r”。例如,如果我在wordeditor中输入“Test”,游戏将使用它作为“Test/r”。 我认为这是wordeditor中的一个错误,因此下

所以,我正在制作一个“刽子手”游戏,用一个文字编辑器在游戏中输入你自己的文字。我有一个表单,它打开一个文本文件并在多行文本框中显示内容。之后,用户可以编辑文本框。如果按“保存”,文本框中的内容将保存到文本文件中

现在,无论是阅读还是写作,一切都很顺利。但是现在如果我想玩我的文字,它总是比我输入的文字长。通过调试,我发现我的程序在每个单词后面都添加了“/r”。例如,如果我在wordeditor中输入“Test”,游戏将使用它作为“Test/r”。 我认为这是wordeditor中的一个错误,因此下面是代码:

namespace Hangman
{
  public partial class WordEditor : Form
  {
    public WordEditor()
    {
      InitializeComponent();
      using (StreamReader sr = new StreamReader(new FileStream("C:\\Users\\tstadler\\Desktop\\Hangman.txt", FileMode.Open)))
      {
        string[] Lines = sr.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < Lines.Length; i++)
        {
          textBox1.Text += Lines[i] + Environment.NewLine;               
        }
      }     
    }

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {
      string[] words = textBox1.Text.Split('\n');
      FileStream overwrite = new FileStream("C:\\Users\\tstadler\\Desktop\\Hangman.txt", FileMode.Create);
      using (StreamWriter file = new StreamWriter(overwrite))
      {
        for (int i = 0; i < words.Length; i++)
        {
          file.Write(words[i] + Environment.NewLine);
        }
      }

  MessageBox.Show("Words saved. ");
}
名称空间刽子手
{
公共部分类WordEditor:Form
{
公共WordEditor()
{
初始化组件();
使用(StreamReader sr=new StreamReader(新文件流(“C:\\Users\\tstadler\\Desktop\\Hangman.txt”,FileMode.Open)))
{
string[]Lines=sr.ReadToEnd().Split(新字符串[]{Environment.NewLine},StringSplitOptions.RemoveEmptyEntries);
对于(int i=0;i
有人能告诉我他是否认识到这个错误吗?
谢谢。

无论您在哪里插入您使用的新行
环境。新行
-除了一行:

string[] words = textBox1.Text.Split('\n');
这将导致字符串被
\n
拆分,而
环境。在Windows系统上,换行符
\r\n
组成。因此,拆分后
\r
保留在字符串的末尾

要解决该问题,只需将上面提到的行替换为

string[] words = textBox1.Text.Split(new string[] { Environment.NewLine });

无论在何处插入使用的新行。新行
-除了一行:

string[] words = textBox1.Text.Split('\n');
这将导致字符串被
\n
拆分,而
环境。在Windows系统上,换行符
\r\n
组成。因此,拆分后
\r
保留在字符串的末尾

要解决该问题,只需将上面提到的行替换为

string[] words = textBox1.Text.Split(new string[] { Environment.NewLine });
使用:

打开文本文件,读取文件的所有行,然后关闭文件:

行定义为一系列字符,后跟回车符
\r
、换行符
\n
,或紧跟换行符的回车符

以及:

创建新文件,将指定的字符串数组写入该文件,然后关闭该文件

样本:

string[] lines = File.ReadAllLines("filePath");

File.WriteAllLines("filePath", textBox.Text.Split(new[] {Environment.NewLine}));
使用:

打开文本文件,读取文件的所有行,然后关闭文件:

行定义为一系列字符,后跟回车符
\r
、换行符
\n
,或紧跟换行符的回车符

以及:

创建新文件,将指定的字符串数组写入该文件,然后关闭该文件

样本:

string[] lines = File.ReadAllLines("filePath");

File.WriteAllLines("filePath", textBox.Text.Split(new[] {Environment.NewLine}));

您的解决方案基本正确,但非常冗长请看以下内容:

)

)

所以你的阅读部分应该是:

textBox1.Text = string.Join(Environment.NewLine, 
       File.ReadAllLines(filePath).Where(x=>!string.IsNullOrWhiteSpace(x)));

 File.WriteAllText(filePath,textBox1.Text);

您的解决方案基本正确,但非常冗长请看以下内容:

)

)

所以你的阅读部分应该是:

textBox1.Text = string.Join(Environment.NewLine, 
       File.ReadAllLines(filePath).Where(x=>!string.IsNullOrWhiteSpace(x)));

 File.WriteAllText(filePath,textBox1.Text);

+Environment.NewLine;将添加a/rit代表回车+Environment.NewLine;将添加a/rit代表给出错误的回车。“string.Split(params char[])的最佳重载方法有一些无效参数。”@TimKatheteStadler抱歉,感谢您指出-我修复了这一点。这给出了一个错误。“用于'string.Split(params char[])的最佳重载方法有一些无效参数。”@timkhattestadler抱歉,感谢您指出这一点-我已经解决了。