字符串操作VB.net



下面是输入文件

     DELL  NOTEBOOK
     1000  USD      
     ACER  NOTEBOOK
     HP    NOTEBOOK
     APPLE MOBILE
     900   USD
     HTC   MOBILE
     800   USD

基本上,我需要检查第二行是否有"美元"字样,然后放第一行的"是"或"否"。预期输出

     DELL  NOTEBOOK   YES
     1000  USD      
     ACER  NOTEBOOK   NO
     HP    NOTEBOOK   NO
     APPLE MOBILE     YES
     900   USD
     HTC   MOBILE     YES
     800   USD

下面是我的代码,需要一些调整

      Sub Main()
      Dim fh As StreamReader
      fh = new StreamReader("list.txt")
      dim currency as string
      dim bCurrency as boolean
      Dim s As String = fh.ReadLine()
      While not s Is Nothing
            currency = s.substring(5,3)
            if currency = "USD" then
              bCurrency  = True
            else
                if bCurrency  = true then
                    Console.WriteLine(s & "     Yes")
                    bCurrency  = False
                else
                    Console.WriteLine(s & "     No")
                end if             
            end if
            s = fh.ReadLine
      End While
      fh.Close()
    End Sub

经过编辑,包括保存到文件和屏幕上

您希望最终输出打印到屏幕上,还是保存到另一个文本文件中?以下是它在屏幕AS WELL AS SAVED to OUTPUT.TXT 上的显示方式

 Dim tmpLine as String
 Dim FirstLine as Boolean = True
    Dim fh As StreamReader
    Dim fout as StreamWriter
    fh = New StreamReader("list.txt")
    fout = New StreamWriter("output.txt")
    Dim line As String = fh.ReadLine()
    Dim lineData As String() = Nothing
    While Not line Is Nothing
        lineData = line.Split(" ")
       If FirstLine=False Then
            If lineData(1).Equals("USD") Then
                 Console.WriteLine(tmpLine & " Yes")
                 fout.WriteLine(tmpLine & " Yes")
            Else
                 Console.WriteLine(tmpLine & " No") 
                 fout.WriteLine(tmpLine & " No")
            End If
        Else
             FirstLine = False
        End If
        tmpLine = line
        line = fh.ReadLine
    End While
    fh.Close()
        If lineData(1).Equals("USD") Then
             Console.WriteLine(tmpLine & " Yes")
             fout.WriteLine(tmpLine & " Yes")
        Else
             Console.WriteLine(tmpLine & " No") 
             fout.WriteLine(tmpLine & " No")
        End If
    fout.Close()

有一个定义良好的输入格式并使用split()。

输入:

DELL NOTEBOOK
1000 USD
ACER NOTEBOOK
HP NOTEBOOK
APPLE MOBILE
900 USD
HTC MOBILE
800 USD

方法:

    Dim fh As StreamReader
    fh = New StreamReader("list.txt")
    Dim line As String = fh.ReadLine()
    Dim nextLine As String = fh.ReadLine()
    While line IsNot Nothing
        If nextLine IsNot Nothing Then
            Dim lineData As String() = nextLine.Split(" ")
            If lineData(1).Equals("USD") Then
                Console.WriteLine(line & " Yes")
                Console.WriteLine(nextLine)
            Else
                Console.WriteLine(line & " No")
                Console.WriteLine(nextLine & " No")
            End If
            line = fh.ReadLine
            nextLine = fh.ReadLine
        Else
            Console.WriteLine(line & " No")
            line = fh.ReadLine
        End If
    End While
    fh.Close()
    End Sub

最新更新