我有一个CSV文件,我读入并通过写出每列的逗号分隔值将其转换为TXT文件。我希望程序也能够将TXT文件转换回CSV,因此我创建了一个TXTReader
类。我在阅读大型TXT文件时遇到麻烦。我第一次尝试使用它String.Split
:更快地分割txt文件
string fullText = File.ReadAllText(fileName);
string[] values = fullText.Split(',');
这个工作在第一,但开始引起问题时,用绳子在他们有逗号列露面,使得程序认为这是另一列,而这只是一个字符串。我继续寻找解决方案,并找到了https://stackoverflow.com/a/3147901/1870760。这适用于小文件,但对于我的31 MB TXT文件非常慢。然后我试着用自己的黑客方式遍历fullText
中的所有字符并检查"\""
,因为所有字符串在TXT中都包含引号,但这也需要很长时间(~10分钟)。 我也不能使用https://stackoverflow.com/a/3148691/1870760,因为我的字符串列值有时包含\n
这会导致读者认为这是一个新行,事实并非如此。
那么,我是否必须接受一段时间才能阅读31 MB TXT文件并将这些值拆分为列或者是否有更多性能高效的方法来执行此操作?
一个简单的事情,你可以做的事情是加速使用RegexOptions.Compiled。其他的东西包括,得到一个更快的正则表达式查询(可能不是真的可能),使用线程。 – Vajura
'TextFieldParser'处理所有 - [在C#中解析逗号分隔的字符串并发症](http://stackoverflow.com/questions/30078054/parse-comma-seperated-string-with-compression-in- c-sharp) –
@AlexK。正如问题所述,我不能使用'TextFieldParser',因为它读取每个换行符的值,而我的字符串可以包含'\ n'。 –