Страница: 1 |
Страница: 1 |
Вопрос: Найти слово и вырезать всю строку
Добавлено: 13.05.06 23:05
Автор вопроса: Ученик
На экзамен дали задачку, на vb.net нужно вот что сделать:
Есть текстовой файл, на форме есть текстовое поле, вводим туда искомое слово и программа ищет его в файле, после это вырезает ВСЮ СТРОКУ где находиться искомое слово, в файле оно может повторяться несколько раз, а значит вырезаем все строки где есть это слово, и сохраняем результат в файл.
Это трудно написать? помогите пожалуйста, сам я не знаю с чего начать даже!
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
ANoD
Вопросов: 5
Ответов: 18
Профиль | | #1
Добавлено: 13.05.06 23:59
если б просто интересно было - сказал бы(и даже написал), а так - "На экзамен дали задачку.." - это уже платная услуга
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 14.05.06 01:49
Говорила тебе мама.. учи,сынок, учи!! Так нет же, не послушался...
Это в каком учебном заведении VB.NET преподают?
Вовсе нет..
Это я тебе сейчас расскажу..
1.Считываешь из файла строки и получаешь массив строк
2.В цикле перебираешь посторочно этот массив и в каждой строке ищешь исходное слово.Если находишь,то у даляешь строку.
3.И то что осталось сохраняешь на диск
Вот, собственно, и все! Разве это сложно?
Номер ответа: 3
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #3
Добавлено: 14.05.06 11:26
не тестировал
dim result as string
dim delstr as tring
delstr="delstr"
open "input.txt" for input as #1
line input #1,temp
if instr(temp,delstr)=0 then
result=result+temp
end if
close #1
open "output.txt" for output as #1
print #1,result
close #1
Номер ответа: 4
Автор ответа:
Ученик
Вопросов: 2
Ответов: 2
Профиль | | #4
Добавлено: 14.05.06 11:39
Разве это сложно?
для меня да
Почему дуаляеш!? мне надо эту строку с исходным словом вырезать и сохранить в файл, я не знаю этот VB.NET, у нас был паскаль и дельфи, новый препод появился, месяц этот .NET препадавал...ну сделайте пример если не трудно
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 14.05.06 15:26
astoro
а ты попробуй свой код на НЕТ протестить.. вот посмеешься!
Номер ответа: 6
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #6
Добавлено: 14.05.06 17:42
не пользуюс
Номер ответа: 7
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 14.05.06 17:43
Эх, блин... на, двоечник, держи..
Imports Microsoft.VisualBasic.Interaction
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const dialogTitle As String = "Find word"
Dim filePath As String
Dim Comparison As StringComparison = StringComparison.CurrentCulture
Dim LinesIn, LinesOut As ArrayList
With New OpenFileDialog
.Title = "Какой файл читаем?"
.Filter = "Текстовый файл (*.txt)|*.txt"
.CheckFileExists = True
.Multiselect = False
.RestoreDirectory = True
If .ShowDialog = Windows.Forms.DialogResult.Cancel Then .Dispose() : Return
filePath = .FileName
.Dispose()
End With
LinesIn = New ArrayList
Try
Dim sr As StreamReader = New StreamReader(filePath, True)
Do While sr.Peek() >= 0
LinesIn.Add(sr.ReadLine())
Loop
sr.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, dialogTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End Try
If LinesIn.Count = 0 Then MessageBox.Show("File is empty", dialogTitle, _
MessageBoxButtons.OK, MessageBoxIcon.Information) : Return
Dim seachWord As String = InputBox("Введите искомое слово ...", dialogTitle).Trim
If seachWord.Length = 0 Then Return
If MessageBox.Show("Учитывать регистр?", dialogTitle, _
MessageBoxButtons.YesNo, MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.No Then
Comparison = StringComparison.CurrentCultureIgnoreCase
End If
LinesOut = New ArrayList
For Each Line As String In LinesIn
If Line.IndexOf(seachWord, Comparison) >= 0 Then LinesOut.Add(Line)
Next
If LinesOut.Count = 0 Then MessageBox.Show(seachWord & " not found.", dialogTitle, _
MessageBoxButtons.OK, MessageBoxIcon.Information) : Return
MessageBox.Show("Найдено совпадений - " & LinesOut.Count, dialogTitle, _
MessageBoxButtons.OK, MessageBoxIcon.Information)
With New SaveFileDialog
.Title = "Куда будем сохранять?"
.Filter = "Текстовый файл (*.txt)|*.txt"
.OverwritePrompt = True
.DefaultExt = "txt"
.AddExtension = True
.FileName = "Result"
If .ShowDialog = Windows.Forms.DialogResult.Cancel Then .Dispose() : Return
filePath = .FileName
.Dispose()
End With
Try
Dim sw As StreamWriter = New StreamWriter(filePath, False)
For Each Line As String In LinesOut
sw.WriteLine(Line)
Next
sw.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, dialogTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Class
Номер ответа: 8
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #8
Добавлено: 14.05.06 17:48
хм... после этого я еще раз подумаю, стоит ли переходить на VB.Net.
Это ж надо, код в 15 строк меняется на кило плайн-текста.....
Номер ответа: 9
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #9
Добавлено: 14.05.06 18:27
astoro
прежде чем делать подобные завления, следовало бы внимательней взглянуть на код, и ты поймешь почему он такой длинный..
Выкинь оттуда диалоги чтения/сохранения, обработку ошибок,сообщения для юзера, возможность игнорировать регистр и посмотри что останется... А вот после этого я готов выслушать твое мнение относительно кода..
Номер ответа: 10
Автор ответа:
Ученик
Вопросов: 2
Ответов: 2
Профиль | | #10
Добавлено: 14.05.06 18:32
EROS
ОГРОМНОЕ СПАСИБО!!! у меня нет слов!!!! побольше бы таких людей как ты! спасибо!!!!!!!!
Номер ответа: 11
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #11
Добавлено: 14.05.06 19:17
2 EROS
ответ ты дал более чем развернутый.
видимо, для меня, не имеющего почти никакого понятия о .Нет, код показался громоздким, думаю, что из-за незнакомых конструкций. Дискуссию на эту тему вести не могу из-за недостатка знаний.
Сначала не обратил внимание на привзяку вопроса к форуму .NET. Прошу прощения. Ты молодец!