манипулирование строками VB.net - PullRequest
0 голосов
/ 22 июня 2011

Ниже находится входной файл

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

В основном мне нужно проверить, есть ли какое-либо слово «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

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

Отредактировано, чтобы включить Сохранение в файл и на экране оба.

Хотите, чтобы окончательный вывод был распечатан на экране или сохранен в другом текстовом файле? Вот как это будет выглядеть на экране 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()
0 голосов
/ 22 июня 2011

Имеют четко определенный формат ввода и используют 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...