0

.netFrameWork 4.0 でコーディングされている VB.NET プロジェクトについて 2 つの質問があります。

1: たとえば、テキスト ファイル "textfile1.txt" がある場合、プログラムは行 "//This Line" を見つけて、"//This Line" の後の次の行を置き換える必要があります。

例: textfile1.txt 内

//This Line
Some Code here

ここの一部のコードを TextBox1.text のテキストに置き換える必要があります

2:テキストファイル「MultiLineTextBox1」があり、プログラムはMultiTextBox1から行ごとに名前でプロセスを強制終了する必要があります

例: MultiLineTextBox1 内

notepad
mspain

メモ帳と MSPaint を強制終了する必要があります...

4

1 に答える 1

1

あなたの質問から私が理解したことに基づいて、これがあなたが求めているものです。調整する必要がある場合は、お気軽にコメントしてください。

Private Sub Question1()
    Dim list = File.ReadAllLines("yourFilePath").ToList()
    Dim itemCount = list.Count

    For i As Integer = 0 To itemCount - 1
        If list(i) = "//This Line" AndAlso Not ((i + 1) > itemCount) Then
            list(i + 1) = TextBox1.Text
        End If
    Next

    KillProcesses(list)
End Sub

Private Sub Question2()
    Dim list = TextBox1.Text.Split(New String() {Environment.NewLine}, StringSplitOptions.None).ToList()
    KillProcesses(list)
End Sub

Private Sub KillProcesses(items As List(Of String))
    For Each item As String In items.Where(Function(listItem) listItem <> "//This Line") ' Exclude redundant text
        Dim processes = Process.GetProcessesByName(item)

        For Each process As Process In processes
            Try
                process.Kill()                         
            Catch
                ' Do your error handling here
            End Try
        Next
    Next
End Sub

更新: 以下のコードは、以下のコメントで要求された変更を反映する更新バージョンです。

Private Sub Question1()
    Dim list = File.ReadAllLines("YourFilePath").ToList()
    Dim itemCount = list.Count

    For i As Integer = 0 To itemCount - 1
        If list(i) = "//This Line" Then
            If (i + 1 > itemCount - 1) Then ' Check if the current item is the last one in the list, if it is then add the text to the list
                list.Add(TextBox1.Text)
            Else ' An item exists, so just update its value
                list(i + 1) = TextBox1.Text
            End If
        End If
    Next

    ' Write the list back to the file
    File.WriteAllLines(Application.StartupPath & "\test.txt", list)

    KillProcesses(list)
End Sub
于 2013-05-05T23:54:12.007 に答える