Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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# 替换功能isn';在手动打开相关文件之前无法正常工作,这是为什么?_C#_Replace - Fatal编程技术网

C# 替换功能isn';在手动打开相关文件之前无法正常工作,这是为什么?

C# 替换功能isn';在手动打开相关文件之前无法正常工作,这是为什么?,c#,replace,C#,Replace,在用书本学习的过程中,有时我会从pdf中复制一些代码来测试它 假定此小exe将“”更改为“”或“ 它工作得很好,但前提是在调试方法之前手动打开测试的*.cs文件 当代码直接粘贴到相关文件中并关闭,而不再次打开时,Replace方法返回“意外字符?” 我不明白这个问题,因为File.ReadAllText已经打开并关闭了文件 using System; using System.Collections.Generic; using System.IO; class Test { publ

在用书本学习的过程中,有时我会从pdf中复制一些代码来测试它

假定此小exe将“”更改为“”或“

它工作得很好,但前提是在调试方法之前手动打开测试的*.cs文件

当代码直接粘贴到相关文件中并关闭,而不再次打开时,Replace方法返回“意外字符?”

我不明白这个问题,因为File.ReadAllText已经打开并关闭了文件

using System;
using System.Collections.Generic;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = Directory.GetCurrentDirectory();

        string[] csfiles = Directory.GetFiles(path, "*.cs");

        foreach (var item in csfiles)
        {
            string text = File.ReadAllText(item);

            text = text.Replace("‘", "\'")
                       .Replace("’", "\'")
                       .Replace("“", "\"")
                       .Replace("”", "\"");

            File.WriteAllText(item, text);
        }
    }
}

显然,文件.ReadAllText();在打开时会更改编码

我的字符(ASCII+ANSI)在打开时就被破坏了

string text=File.ReadAllText(路径,Encoding.Default);在打开时保持原始编码。替换此项可以正常工作,因此我的exe

谢谢你的帮助

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

class Test
{
public static void Main()
{

    string path = Directory.GetCurrentDirectory();

    string[] csfiles = Directory.GetFiles(path, "*.cs");

    foreach (var item in csfiles)
    {
        string text = File.ReadAllText(item, Encoding.Default);

        string newtext = text.Replace("‘", "\'")
                   .Replace("’", "\'")
                   .Replace("“", "\"")
                   .Replace("”", "\"");

        File.WriteAllText(item, newtext);
    }
}
}

只是为了澄清一下,您是针对example.cs这样的文件运行这段代码的,在它运行之前,您需要先打开这个文件(而不是您所讨论的代码的.cs文件)。另外,运行该文件时是否必须打开该文件,或者只需再次打开并保存它?example.cs文件是如何创建的?example.cs是我要更改的文件。是的。必须重新打开该文件,以便“替换”可以正确处理该文件。运行“替换”时不必打开该文件。我只需对其进行更改即可n文件.example.cs是通过手动复制和粘贴pdf格式书本中的一些代码来创建的。为什么不使用文本编辑器来进行替换?您确定要修改的文件在执行时位于工作目录中吗?这听起来肯定像是您第一次创建文件时正在做一些奇怪的事情。您对此有何看法正在复制文件(即您是否正在将其复制并粘贴到记事本中,是否正在使用其他文本编辑器)?此外,如果您对十六进制编辑器有信心,您可以尝试在打开文件并“修复”之前复制文件“修复后,将其与原始文件进行比较,并查看十六进制文件中的差异,这可能会准确地告诉我们出了什么问题。