Страница: 1 |
Страница: 1 |
Вопрос: Поиск и замена строк
Добавлено: 16.10.07 01:17
Автор вопроса: Sergey | ICQ: 303752501
Привет ) подскажите как написать функцию поиска строки в файле и ее замены, пример, есть файл 1.bin в нем есть строка Sergey её необходимо найти и заменить на Сергей, не могу понять как реализовать. Была бы одна строка не проблема, просто таких строк которые нужно заменить гдето 10000 строк. Спасибо
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #1
Добавлено: 16.10.07 08:22
1. Mid, InStr
2. Replace
Второй вариант даже скорее наверно будет, если файл целиком считать.
Номер ответа: 2
Автор ответа:
Sergey
ICQ: 303752501
Вопросов: 1
Ответов: 6
Профиль | | #2
Добавлено: 16.10.07 11:19
А точнее? листинга готового нет? или алгоритма
Номер ответа: 3
Автор ответа:
Sergey
ICQ: 303752501
Вопросов: 1
Ответов: 6
Профиль | | #3
Добавлено: 16.10.07 11:21
и еще текст который ищем и меняем он в юникоде
Номер ответа: 4
Автор ответа:
Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #4
Добавлено: 16.10.07 15:08
Набросал по быстрому - смотри
Option Explicit
Option Base 1
Public Sub SS()
Dim UsrArr() As String, j As Long, s As String, EmptyStr As String
ReDim UsrArr(1)
'open the txt file for reading
Open ":\New\my.txt" For Input As #1
While Not EOF(1)
ReDim Preserve UsrArr(j + 1)
Line Input #1, s
UsrArr(j) = s
j = j + 1
Wend
Close #1
'Clear the txt file
EmptyStr = ""
Open MsgNames(i) For Output As #1
While Not EOF(1)
Line Input #1, EmptyStr
Wend
Close #1
'Look in the string for Sergei and repalce it with Сергей
For j = LBound(UsrArr) To UBound(UsrArr)
On Error Resume Next
If InStr(1, UsrArr(j), "Сергей" > 0 Then
UsrArr(j) = Replace(UsrArr(j), "Sergei", "Сергей"
End If
Next
'open the txt file for writing
Open ":\New\my.txt" For Output As #1
For j = LBound(UsrArr) To UBound(UsrArr)
Print #1, UsrArr(j)
Next
Close #1
End Sub
Номер ответа: 5
Автор ответа:
Andrew_nik
Вопросов: 15
Ответов: 30
Профиль | | #5
Добавлено: 16.10.07 16:52
Немного подправил - отправляй в работу.
Путь, где должен лежать файл: - D:\New\12.txt
Option Explicit
Option Base 1
Public Sub SS()
Dim UsrArr() As String, j As Long, s As String, EmptyStr As String
j = 1
ReDim UsrArr(1)
'open the txt file for reading
Open ":\New\12.txt" For Input As #1
While Not EOF(1)
ReDim Preserve UsrArr(j + 1)
Line Input #1, s
UsrArr(j) = s
j = j + 1
Wend
Close #1
'Clear the txt file
EmptyStr = ""
Open ":\New\12.txt" For Output As #1
While Not EOF(1)
Line Input #1, EmptyStr
Wend
Close #1
'Look in the string for Sergey and repalce it with Сергей
For j = LBound(UsrArr) To UBound(UsrArr)
On Error Resume Next
If InStr(1, LCase(UsrArr(j)), "sergey" > 0 Then
UsrArr(j) = Replace(LCase(UsrArr(j)), "sergey", "Сергей"
End If
Next
'open the txt file for writing
Open ":\New\12.txt" For Output As #1
For j = LBound(UsrArr) To UBound(UsrArr)
Print #1, UsrArr(j)
Next
Close #1
End Sub
Номер ответа: 6
Автор ответа:
Sergey
ICQ: 303752501
Вопросов: 1
Ответов: 6
Профиль | | #6
Добавлено: 16.10.07 21:05
А если фаил не txt a bin? и как чтобы можно было фаил выбирать и сохранять с другим именем
Номер ответа: 7
Автор ответа:
Sergey
ICQ: 303752501
Вопросов: 1
Ответов: 6
Профиль | | #7
Добавлено: 16.10.07 21:07
и 2 кнопки, одну найти вторую заменить
Номер ответа: 8
Автор ответа:
Sergey
ICQ: 303752501
Вопросов: 1
Ответов: 6
Профиль | | #8
Добавлено: 16.10.07 21:49
Размер файла 20 мегабайт в нем надо поменять примерно 8000 строк, все строки в юникоде, нужно чтобы прога находила адрес строки(к примеру sergey 0x003D340) и меняла по этому адресу на (Сергей 0x003d340) в юникоде не нарушая структуру самого файла. Прога нужна для работы просто файлов много и руками менять не круто а строки в них одни и те же
Номер ответа: 9
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #9
Добавлено: 16.10.07 22:38
если тебе нужен готовый проэкт, укажи цену, которую ты готов заплатить.
Если хочешь делать сам, то Andrew_nik подсказал достаточно.
Номер ответа: 10
Автор ответа:
Sergey
ICQ: 303752501
Вопросов: 1
Ответов: 6
Профиль | | #10
Добавлено: 17.10.07 01:18
как в юникоде искать? так как описал ищет ANSI
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 17.10.07 02:33
InstrB ?
Номер ответа: 12
Автор ответа:
Агент
Вопросов: 3
Ответов: 16
Профиль | | #12
Добавлено: 17.10.07 14:42
Такой программе цена 5 рублей