从文本文件中提取字符串

时间:2017-11-16 19:47:34

标签: string vb.net text extraction

我有一个非常奇怪的文本文件,其中包含一些我需要提取的数据。我真的不知道最好的方法,我需要指导如何做到最好的想法。文字如下:

Picture of Data to Extract

基本上该文件包含该数据。我需要为每个“列”数据提取每个参数AA - FF。每个号码之间都有一些空格..

  1. 是否可以找到单词AA,移到“ - ”字符后面并复制这样的数字,直到有空格....并重复这一行? 或者,
  2. 是否更容易尝试将数据放入由空格分隔的表中?
  3. 不知道如何开始这个并因此寻求帮助。 问候, DH

1 个答案:

答案 0 :(得分:0)

我会阅读每一行并将它们分隔在空格上,扔掉空的东西。 这将为您留下一个字段列表。在此示例中,我以List(Of List(Of string))的形式创建字段列表列表。这会为每一行创建一个字段列表,我认为这样可以很容易地迭代和存储它们。

Vb.net示例

Module Module1

    Sub Main()
        Dim fieldsOfEachLine As New List(Of List(Of String))

        Dim reader As IO.StreamReader = New IO.StreamReader("F:\SlyWorkspace\StackOverflow\SpaceSeparatedText_47337929\sampledata.txt")
        Dim currentLine As String

        Do
            currentLine = reader.ReadLine()
            If currentLine IsNot Nothing Then
                fieldsOfEachLine.Add(currentLine.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries).ToList())
            End If
        Loop Until currentLine Is Nothing

        reader.Close()

        'once you have your fields neatly placed in a list, it's up
        'to you to decide what you want to do with them
        'for this sample, I will just spit them back out the screen using a \ to delimit the information I kept
        For Each item As List(Of String) In fieldsOfEachLine
            Console.WriteLine(String.Join("\", item))
        Next

        Console.ReadLine()

    End Sub

End Module

这是一个快速的c#样本。

using System;
using System.Collections.Generic;
using System.Linq;

namespace CSharp_SpaceSeparatedText_47337929
{
    class Program
    {
        static void Main(string[] args)
        {
            List<List<string>> fieldsForEachLine = new List<List<string>>();
            string currentLine = string.Empty;
            using (System.IO.StreamReader sr = new System.IO.StreamReader(@"F:\SlyWorkspace\StackOverflow\SpaceSeparatedText_47337929\sampledata.txt"))
            {
                while ((currentLine = sr.ReadLine()) != null)
                {
                    fieldsForEachLine.Add(currentLine.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToList());
                }
            }

            foreach (List<string> item in fieldsForEachLine)
            {
                Console.WriteLine(string.Join("/", item));
            }

            Console.ReadLine();
        }
    }
}

我的数据文件包含此

                           1                      2                     3          
                bu                     AU                    BG
AA               --      929.2244             1074.4697                 1114.7150
BB               --        1.458             1074.4697              1114.7150
CC           --    456.4584    448.4     584.5
DD  -- 1234.458      789.456                             4898.45

我的输出是

1\2\3
bu\AU\BG
AA\--\929.2244\1074.4697\1114.7150
BB\--\1.458\1074.4697\1114.7150
CC\--\456.4584\448.4\584.5
DD\--\1234.458\789.456\4898.45