Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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/5/ruby-on-rails-4/2.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# 什么';这是在c语言中解析固定位置ascii文件的最佳方法#_C# - Fatal编程技术网

C# 什么';这是在c语言中解析固定位置ascii文件的最佳方法#

C# 什么';这是在c语言中解析固定位置ascii文件的最佳方法#,c#,C#,我需要解析一个固定位置的ascii文件。该文件作为一个包含数百行或数千行的文本文档传入。每行大约100个字符宽。每个数据元素的长度都不同。我真的不想手动解析每个数据元素。我记得,在我用“C”编码的那一天,我们可以获取一些数据,覆盖一个结构,然后引用结构中的数据元素。我做了一些研究,但我没有看到任何关于如何在C#中实现这一点的实例。对如何解析这些数据有什么建议吗 这是一个数据可能是什么样子的示例: 约翰·多伊先生纽约大街123号NY11111 MrsMelissa Schwartzen4444密西

我需要解析一个固定位置的ascii文件。该文件作为一个包含数百行或数千行的文本文档传入。每行大约100个字符宽。每个数据元素的长度都不同。我真的不想手动解析每个数据元素。我记得,在我用“C”编码的那一天,我们可以获取一些数据,覆盖一个结构,然后引用结构中的数据元素。我做了一些研究,但我没有看到任何关于如何在C#中实现这一点的实例。对如何解析这些数据有什么建议吗

这是一个数据可能是什么样子的示例:

约翰·多伊先生纽约大街123号NY11111
MrsMelissa Schwartzen4444密西西比圣费城PA11111

标题-从第0列开始,长度为3。 FirstName-从第3列开始,长度为10。 LastName-从第13列开始,长度为10。 地址-从第23列开始,长度为20。 城市-从第43列开始,长度为15。 状态-从第58列开始,长度为2。 Zip-从第60列开始,长度为5


解析此数据的第一个想法可能是迭代文件中的每一行,并获取标题、名字、姓氏、地址等的子字符串。但是必须有一种更优雅的方法来解析此数据。这就是为什么我要问是否有一种方法可以使用指针并用结构覆盖数据。这是一个非托管解决方案,但我想不出任何更好的方法来解决这个问题。除非你们中的一个聪明人能提出建议。

微软很好地为我们提供了这门课

下面是一个如何使用它的示例

示例页面中的代码


密码在哪里?到目前为止你试过什么?你说的是什么文件结构?什么是“数据元素”?你在寻找什么?我补充了一些细节。谢谢你到目前为止的评论,但是我试图用一种比创建子字符串更优雅的方式来解决这个问题。我喜欢它。我会试试的。但是把它放在视觉基础组件中不是很好
Microsoft.VisualBasic.FileIO.TextFieldParser
调用程序集并不重要。它可以被称为Apple.A.Day.Keeps.The.Doctor.Away。。point是BCL的一部分,将作为任何.NET安装的一部分存在。
Using Reader As New Microsoft.VisualBasic.FileIO.
   TextFieldParser("C:\TestFolder\test.log")

   Reader.TextFieldType =
      Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
   Reader.SetFieldWidths(5, 10, 11, -1)
   Dim currentRow As String()
   While Not Reader.EndOfData
      Try
         currentRow = Reader.ReadFields()
         Dim currentField As String 
         For Each currentField In currentRow
            MsgBox(currentField)
         Next 
      Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
         MsgBox("Line " & ex.Message &
         "is not valid and will be skipped.")
      End Try 
   End While 
End Using