C# 如何知道.txt扩展名是包含纯文本还是CSV结构?

C# 如何知道.txt扩展名是包含纯文本还是CSV结构?,c#,csv,C#,Csv,客户端发送一个.txt文件中的csv结构,有时发送一个包含段落和句子的平面结构。如何通过C#中的程序识别客户端发送的文件是CSV还是纯文本 CSV示例: 1,33838,20181217,GTR,5,1587,S,"STT PPP USA, SA.",N,2,58.00,3,58.00 2,1,0,0,LHG,1000000007,,6,0,1000000006, 2,2,0,0,LHG,1000000007,,6,0,1000000003, 文本平面示例: 1,33838,20181217,

客户端发送一个.txt文件中的csv结构,有时发送一个包含段落和句子的平面结构。如何通过C#中的程序识别客户端发送的文件是CSV还是纯文本

CSV示例:

1,33838,20181217,GTR,5,1587,S,"STT PPP USA, SA.",N,2,58.00,3,58.00
2,1,0,0,LHG,1000000007,,6,0,1000000006,
2,2,0,0,LHG,1000000007,,6,0,1000000003,
文本平面示例:

1,33838,20181217,GTR,5,1587,S,"STT PPP USA, SA.",N,2,58.00,3,58.00
2,1,0,0,LHG,1000000007,,6,0,1000000006,
2,2,0,0,LHG,1000000007,,6,0,1000000003,
ASCII转换器使您能够轻松地将ASCII字符转换为十六进制、十进制和二进制表示形式。此外,base64对二进制数据进行编码/解码。当您在上面的一个文本框中键入时,其他框将动态转换


ASCII转换器不会在转换的值之间自动添加空格。您可以使用“添加空格”按钮来分隔ASCII字符,以便转换后的值也可以彼此分隔。

在这种特定情况下,我将在文本中查找段落。如果至少有一个,则表示它是纯文本,否则它是CSV。

您有几个选项。从客户端开始:

  • 同意不同的编码方案/或切换到.csv扩展名(请参阅)
  • 同意第一行将包含列名
  • 同意使用不同的分隔符,以便您可以检查字符的唯一频率

如果这些都不是选项,那么您可能可以在文件中查找模式并基于它创建算法。该示例看起来可以检查逗号频率或特定列类型,如特定列上的数值

如果不分析文件的一部分,就无法猜测

必须至少分析前两行


如果您使用“,”分隔符获得相同数量的列,您可以假定它是一个CSV文件

为什么不同意使用一个标准文件约定,这样就不会有任何意外?因此,如果您收到一个包含类似以下内容的txt文件:
Hello,Levi\n希望您今天感觉更好是纯文本还是CSV?请建议您的客户在发送CSV数据时遵守标准并使用CSV文件格式。最好的答案是使用AI。到目前为止,最好的答案是避免两种完全不同形式的输入混淆。可以将不同类型的数据发送到不同的端点。有不同的文件扩展名。不要解决问题——让它消失。如果没有其他办法,您可以尝试将其作为CSV处理。纯文本永远不会意外地与CSV数据的一致、可读行相似。如果失败,请将其作为文本进行尝试。这仍然不太好,因为现在格式错误的CSV可以作为纯文本处理。假设您别无选择,我能想到的最严格的解决方案是尝试将数据作为CSV导入,验证每行中的列数是否相同,以及每列是否为预期格式(日期、文本、数字等)。如果验证失败,则假定它是段落格式。不同的分隔符?如果它是CSV,则是逗号分隔的。为什么要举行所有这些仪式来纠正文件命名问题?没有必要同意这些,因为CSV已经是众所周知的了。没有必要进行任何此类处理。尤其是因为它永远不可能100%准确。让我们看看“哦”此外,术语“CSV”还表示一些密切相关的分隔符分隔格式,使用不同的字段分隔符,例如分号。这些格式包括制表符分隔的值和空格分隔的值。字段数据中不存在的分隔符(例如制表符)保持格式解析简单”。第二,你为什么这么挑剔,这家伙刚刚创建了一个账户,他有一个很难相处的客户。不喜欢问题或答案,请投票否决!你为什么生气呢?如果段落之间用一个换行符隔开,那就不行了。无论如何:这是一个文件命名问题。不是猜测格式问题(而且猜测格式问题对于堆栈溢出来说太广泛了)。