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

Asa*_*sad 0 c# parsing

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

[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”;
Run Code Online (Sandbox Code Playgroud)

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

[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?;
Run Code Online (Sandbox Code Playgroud)

请注意每当出现双引号时出现的特殊字符( ).

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

更新

我使用以下行进行解析

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();
        }
Run Code Online (Sandbox Code Playgroud)

Jul*_*lia 5

您的输入文件不包含双引号,这是谎言.它包含开头双引号结束双引号而不是标准版本.

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

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

另一种选择是简单地替换使用"