Microsoft.VisualBasic.IO中的TextFieldParser可以读取非破坏空间吗?

时间:2017-06-07 22:35:40

标签: c# csv file-io

我使用Microsoft.VisualBasic.FileIO TextFieldParser类来读取包含两列的CSV。第一列包含要替换的字符/字符集,第二列包含替换字符。以下是该文件的一部分:

"ô","o"
"´","'"
"•","-"
"½","½"
"Á","Á"
"ú","ú"
"à","à"
"ê","ê"
"ì","ì"
"Ó","Ó"
" "," "

最后一个条目是一个不间断的空格(我通过检查十六进制编辑器并查看值c2 a0来验证这一点。

以下是我阅读CSV文件的代码:

private static Dictionary<string, string> loadReplacementCharactersFromCsv(string filePath)
{
    Dictionary<string, string> replacementCharacters = new Dictionary<string, string>();
    using (TextFieldParser parser = new TextFieldParser(filePath))
    {
        parser.TextFieldType = FieldType.Delimited;
        parser.SetDelimiters(",");
        parser.HasFieldsEnclosedInQuotes = true;
        while (!parser.EndOfData)
        {
            string[] fields = parser.ReadFields();
            replacementCharacters.Add(fields[0], fields[1]);
        }
    }
    return replacementCharacters;
}

我无法弄清楚为什么不间断空格作为空字符串加载到Dictionary中。你能帮我搞清楚我做错了吗?

1 个答案:

答案 0 :(得分:0)

感谢HansPassant的评论,这解决了我的问题。

默认情况下,<header class="page-header"> <button class="menu-btn">&#9776;</button> <nav> <a href="#home">Home</a> <a href="#contact">Contact</a> <a href="#about">About</a> </nav> </header> <main> <h1>Responsive Topnav Example</h1> <p>Resize the browser window to see how it works.</p> </main>属性设置为TextFieldParser.TrimWhiteSpace。这会导致拖尾左右白色空间被删除。在我的情况下,我试图用常规空间替换不间断的空间,但是当解析器从CSV文件中读取非中断空间时,它最终返回一个空字符串,因为我没有重置{的值{1}}到true。以下修改解决了该问题:

TextFieldParser.TrimWhiteSpace