Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更快地分割txt文件_C#_Regex_String - Fatal编程技术网

C# 更快地分割txt文件

C# 更快地分割txt文件,c#,regex,string,C#,Regex,String,我有一个我读入的CSV文件,我把它转换成一个TXT文件,写下每列逗号分隔的值。我希望程序也能够将TXT文件转换回CSV,因此我正在创建一个TXTReader类。我在读取大型TXT文件时遇到问题。我第一次尝试使用String.Split: string fullText = File.ReadAllText(fileName); string[] values = fullText.Split(','); 这在一开始是可行的,但当出现带有逗号字符串的列时,会引起问题,使程序认为它是另一列,而它只

我有一个我读入的CSV文件,我把它转换成一个TXT文件,写下每列逗号分隔的值。我希望程序也能够将TXT文件转换回CSV,因此我正在创建一个
TXTReader
类。我在读取大型TXT文件时遇到问题。我第一次尝试使用
String.Split

string fullText = File.ReadAllText(fileName);
string[] values = fullText.Split(',');
这在一开始是可行的,但当出现带有逗号字符串的列时,会引起问题,使程序认为它是另一列,而它只是一个字符串。我继续寻找解决方案,并找到了答案。这对小文件非常有效,但对我的31 MB TXT文件来说速度非常慢。然后我尝试了我自己的黑客方法,迭代
全文
中的所有字符,并检查
“\”
,因为所有字符串在TXT中都有引号,但这也需要很长时间(约10分钟)。 我也不能使用,因为我的字符串列值有时包含
\n
,这会导致读者认为它是一个新行,而不是


那么,我是否必须接受读取31 MB TXT文件并将值拆分为列需要一段时间,还是有更有效的方法来执行此操作?

有一个项目,据说csv读取/拆分速度比低内存使用率的正则表达式快15倍。如果要显示稍后提供数据。来源可用

您可以自定义许多参数(包括换行选项),因此我认为它足够智能,可以在值中处理您的
\n
,它可以明确地处理参数值中的逗号


有一个项目,据说在低内存使用率下,csv读取/拆分速度比正则表达式快15倍。如果您想稍后显示数据,甚至还支持数据绑定。源可用

您可以自定义许多参数(包括换行选项),因此我认为它足够智能,可以在值中处理您的
\n
,它可以明确地处理参数值中的逗号


一个简单的加速方法是使用RegexOptions.Compiled。其他方法包括,获取更快的regex查询(可能不太可能),使用线程。
TextFieldParser
处理所有这些-@AlexK。如问题中所述,我不能使用
TextFieldParser
,因为它读取每行换行的值,并且我的字符串可以包含
\n
。所以用另一个字符交换\n,解析,交换回?@AlexK.hmm,这听起来像是一个解决方案。但这意味着我不需要o将其替换为任何字符串中其他地方都不使用的字符,ASCII值会是多少?要加快速度,可以做的一件简单的事情是使用RegexOptions.Compiled。其他事情包括,获得更快的regex查询(可能不太可能),使用线程。
TextFieldParser
处理所有这些-@AlexK。如问题中所述,我不能使用
TextFieldParser
,因为它读取每行换行的值,并且我的字符串可以包含
\n
。所以用另一个字符交换\n,解析,交换回?@AlexK.hmm,这听起来像是一个解决方案。但这意味着我不需要o将其与任何字符串中其他地方都未使用的字符交换,该ASCII值是多少?