如何读取c#文本文件中的双引号(")

本文关键字:quot 文件 何读取 读取 文本 | 更新日期: 2023-09-27 18:16:42

我必须阅读一个文本文件,然后解析它,在c#中使用VS 2010。示例文本如下:

[TOOL_TYPE]
; provides the name of the selected tool for programming
“Phoenix Select Advanced”;
[TOOL_SERIAL_NUMBER]
; provides the serial number for the tool
7654321;
[PRESSURE_CORRECTION]
; provides the Pressure correction information requirement
 “Yes”;
[SURFACE_MOUNT]
; provides the surface mount information
“Yes”;
[SAPPHIRE_TYPE]
; provides the sapphire type information
“No”;

现在我只需要解析字符串数据(在双引号中)和头(在方括号[]中),然后将其保存到另一个文本文件中。我可以成功解析报头,但是双引号中的字符串数据没有正确显示,如下所示。

[TOOL_TYPE]
�Phoenix Select Advanced�;
[TOOL_SERIAL_NUMBER]
7654321;
[PRESSURE_CORRECTION]
�Yes�;
[SURFACE_MOUNT]
�Yes�;
[SAPPHIRE_TYPE]
�No�;
[EXTENDED_TELEMETRY]
�Yes�;
[OVERRIDE_SENSE_RESISTOR]
�No�;

请注意,每当双引号出现时,都会出现一个特殊字符(*)。

如何在目标文件中写入双引号(")并避免(")?

更新

我使用以下行进行解析

temporaryconfigFileWriter。WriteLine(configFileLine, false, Encoding.Unicode);

下面是我使用的完整代码:

        string temporaryConfigurationFileName = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "''Temporary_Configuration_File.txt";
        //Pointers to read from Configuration File 'configFileReader' and to write to Temporary Configuration File 'temporaryconfigFileWriter'
        StreamReader configFileReader = new StreamReader(CommandLineVariables.ConfigurationFileName);
        StreamWriter temporaryconfigFileWriter = new StreamWriter(temporaryConfigurationFileName);
        //Check whether the 'END_OF_FILE' header is specified or not, to avoid searching for end of file indefinitely
        if ((File.ReadAllText(CommandLineVariables.ConfigurationFileName)).Contains("[END_OF_FILE]"))
        {
            //Read the file untill reaches the 'END_OF_FILE'
            while (!((configFileLine = configFileReader.ReadLine()).Contains("[END_OF_FILE]")))
            {
                configFileLine = configFileLine.Trim();
                if (!(configFileLine.StartsWith(";")) && !(string.IsNullOrEmpty(configFileLine)))
                {
                    temporaryconfigFileWriter.WriteLine(configFileLine, false, Encoding.UTF8);
                }
            }
            // to write the last header [END_OF_FILE]
            temporaryconfigFileWriter.WriteLine(configFileLine);
            configFileReader.Close();
            temporaryconfigFileWriter.Close();
        }

如何读取c#文本文件中的双引号(")

您的输入文件不包含双引号,这是一个谎言。它包含开始双引号和结束双引号,而不是标准版本。

首先,你必须确保你正在用正确的编码读取你的输入(尝试多个,只是在c#的文本框中显示字符串,你会看到它是否正确显示字符相当快)

如果你想要这样的字符出现在你的输出中,你必须把输出文件写成ASCII以外的东西,如果你把它写成UTF-8,例如,你应该确保它以字节顺序标记开始(否则它将是可读的,但一些软件,如notepad将显示2个字符,因为它不会检测到文件不是ASCII)。

另一种选择是简单地将替换为"

看起来您正在使用正确的印刷引号(“...”)而不是直接的ASCII引号("...")。我猜你是用错误的编码读取了文本文件。

如果你能在记事本中正确地看到它们,并且ASCII和Unicode编码都不能工作,那么它可能是1252码页。你可以通过

获取编码
Encoding.GetEncoding(1252)