我使用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中。你能帮我搞清楚我做错了吗?
答案 0 :(得分:0)
感谢HansPassant的评论,这解决了我的问题。
默认情况下,<header class="page-header">
<button class="menu-btn">☰</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