根据图案合并线

时间:2018-11-12 15:32:29

标签: vb.net

很抱歉,我的建议太具体了,这对您来说是最好的 我的文本文件中包含以下数据。

1234-5678
SK3
2345-6789
R306
R550
R551
R552
R553
R554
R555
3456-7890
RL573
RL574
RL575

我需要写一个新的文本文件

1234-5678 SK3
2345-6789 R306
2345-6789 R550
2345-6789 R551
2345-6789 R552
2345-6789 R553
2345-6789 R554
2345-6789 R555
3456-7890 RL573
3456-7890 RL574
3456-7890 RL575

1 个答案:

答案 0 :(得分:0)

假设文件的第一个条目是一个前缀,并且所有前缀都包含“-”:

如果文件很大,则应使用流而不是将其加载到列表中。

代码是C#格式的元代码,如果使用正确的语法,也可以在VB.NET中使用。

StringBuilder sb = new StringBuilder();
List<string> lines = file.ReadAllLines("yourfile.txt");

foreach (String line in lines) {
    string prefix;
    if (line.Contains("-")) {
       prefix = line + " ";
    } else {
       sb.appendline(prefix + line);
    }    
}

// save content of StringBuilder to file

Streamreader的工作方式如下:

 using (StreamReader sr = new StreamReader(path)) 
 {
     string prefix;

     while (sr.Peek() >= 0) 
     {
         String line = sr.readLine();

         if (line.Contains("-")){
            prefix = line + " ";
         } else {         
            sb.appendline(prefix + line);
         }           
     }
 }

VB.Net版本:

Dim sb As StringBuilder = New StringBuilder()
Dim Prefix As String = String.Empty

Using reader As StreamReader = New StreamReader("[Input File Path]")
    While Not reader.EndOfStream
        Dim Line As String = reader.ReadLine()
        If Line.Contains("-"c) Then
            Prefix = Line & " "
        Else
            sb.AppendLine(Prefix & Line)
        End If
    End While
End Using

Using writer As StreamWriter = New StreamWriter("[Output File Path]")
    writer.WriteLine(sb)
End Using