2017-09-18 46 views
2

我有一个由C#读取的输入csv文件。我想写一段代码来扫描文件中的所有'nulls',并用输出中的空字符串替换。用C#读取的CSV文件中的所有空值替换

到目前为止,我已经写了这个。公共FileProcessor()似乎没有工作

class FileProcessor 
{  
    //File Objects 
    readonly Dictionary<string, FileInfo> _fileDict; 

    //DB Objects 
    private readonly EMIRDB _emirdb; 


    public FileProcessor() 
    { 
     _fileDict = new Dictionary<string, FileInfo>(); 
     _emirdb = new EMIRDB(); 
    } 

    public FileProcessor() 
    { 
     string replacenull = File.ReadAllText ("EMIR_VU_E_"); 
     replacenull = replacenull.Replace("null", ""); 
     File.WriteAllText("EMIR_VU_E_", replacenull); 
    } 
+0

你好,欢迎来到SO。我建议你尝试一下自己。如果您是C#的新手,我建议您先熟悉该语言,然后尝试解决您所描述的问题。这不是一个网站,您可以要求人们为您编写代码。你应该尝试一下自己,然后来这里以防万一没有按预期工作。详细解释你期望什么,你得到什么以及你尝试过什么。 – Umberto

+0

除此之外,文本'null'对于CSV来说是非常有效的值。这只是四个字母。这意味着你*不应该*试图替换它,因为你会破坏其他数据,例如'这只是一个空案'。如果文件的规范说明字符串'null'表示缺少数据,则应该在*阅读文件后自行更换*或者配置您的CSV阅读器(您没有提到)以这种方式处理它 –

+0

其中将我们带到*文件*中的空字节。没有任何。这不是一个CSV文件,或者它是一个Unicode文件,其中ANSI字符以NUL字节开头(即0x00)。它没有什么问题,'File.ReadAllText'可以很好地处理它。 * .NET的字符串*本身就是Unicode –

回答

2

你不能有两个构造函数使用同一组参数(在这种情况下,零个参数)。

因此:

public FileProcessor() 
{ 
    _fileDict = new Dictionary<string, FileInfo>(); 
    _emirdb = new EMIRDB(); 
} 

public FileProcessor() 
{ 
    string replacenull = File.ReadAllText ("EMIR_VU_E_"); 
    replacenull = replacenull.Replace("null", ""); 
    File.WriteAllText("EMIR_VU_E_", replacenull); 
} 

是不允许的。

您需要删除其中一个构造函数。 或者将代码从一个构造函数移入另一个构造函数。

+0

谢谢!我把它放到第一个构造函数中,它工作 – Iasha