替换从csv读取的文本中的字符串并保存

时间:2016-01-08 11:17:42

标签: c# csv

我设法加载了csv,现在想要更改一些字符串然后再次保存。

第一个问题:他不想将文本更改为' 0。仅替换" 4"用" 0"有效,但从来没有我的字符串超过1个字符。

第二个问题:我删除了所有' 到""的最后一个问题。在编辑器中打开csv时,它会显示一些奇怪的亚洲字符,而不是什么。 (䈀攀稀甀最猀瀀爀)

我的csv中没有空格。 csv看起来像

  

.....&#34 ;;" ++ 49 然后更多的随机数字,依此类推。

这只是找到++ 49的部分。

相关代码:

Encoding ansi = Encoding.GetEncoding(1252); 

            foreach (string file in Directory.EnumerateFiles(@"path comes here, "*.csv"))
            {

                string text = File.ReadAllText(file, ansi);
                text = text.Replace(@"++49", "'0");
                text = text.Replace("+49", "'0");
                text = text.Replace(@"""", "");
                File.WriteAllText(file, text, ansi);
            }

我做了一些根本错误的事情吗?

修改:它的外观:";"++49<morenumbers>";;它应该是什么样的:;0<morenumbers>;;

1 个答案:

答案 0 :(得分:0)

正如人们在评论中提到的,问题在于您的文件编码解码。所以在这种情况下你可以试试这个:

 foreach(string file in Directory.EnumerateFiles(@"path comes here","*.csv"))
            {
                Encoding ansi;
                using (var reader = new System.IO.StreamReader(file, true))
                {
                    ansi = reader.CurrentEncoding; // please tell what you have here ! :)
                }
                string text = File.ReadAllText(file, ansi);
                text = text.Replace(@"++49", "'0");
                text = text.Replace(@"+49", "'0");
                text = text.Replace(@"""", "");
                File.WriteAllText(file, text, ansi);
            }

对我而言,我能够设置的所有格式都可以正常工作。然后,您不必将编码设置为硬编码值