2017-09-18 119 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