Страница: 1 |
эсть текстовой файл a, я в нём что-то заменил a = Replace(a, Text1.Text, Text2.Text) возможно ли посчитать сколько замещений в нём произошло?
1. Создай массив и делай индексированные переменные, 2. Создай тип и тоже самое. Вручную, например, так: Private Sub Command1_Click() a = "Здравствуйте, глубокоуважаемый товарищ Вася!" b = "в" c = "фф" i = 1: s = 0 Do While i <= Len - Len(b) + 1 If Mid(a, i, Len(b)) = b Then s = s + 1 a = Left(a, i - 1) & c & Right(a, Len - (i + Len(b)) + 1) i = i + Len(b) + 1 End If i = i + 1 Loop Print a, s End Sub Спасибо за пример. Только что-то не могу вставить этод код в свою прогу. У меня в list1 на каждой строке имена файлов D:\New Folder\d\fg.txt и т.д. В list2 поочерёдно их перебераю и редактирую. Никак не могу найти ошибку. подскажите где я неправ Private Sub Command2_Click() Dim FileNum As Integer Dim i As Integer, j As Integer, a As String, s As Integer, b As String, y As Integer FileNum = FreeFile For i = 0 To List1.ListCount - 1 Open List1.List(i) For Input As FileNum Do Until EOF(FileNum) Line Input #FileNum, a List2.AddItem a Loop Close #FileNum Open List1.List(i) For Output As FileNum s = 0 For j = 0 To List2.ListCount - 1 y = 1 b = "" Do While y <= Len(List2.List(j)) - Len(Text1.Text) + 1 If Mid(List2.List(j), y, Len(Text1.Text)) = Text1.Text Then s = s + 1 b = Left(List2.List(j), y - 1) & Text2.Text & Right(List2.List(j), Len(List2.List(j)) - (y + Len(Text1.Text)) + 1) y = y + Len(Text2.Text) + 1 End If y = y + 1 Loop Print #FileNum, b Next j Close #FileNum Next i MsgBox (s) End Sub К слову, замена бывает разная - мгновенная и пошаговая. Поясню на примере: В строке "abcxtaaabc" надо "xta" заменить на "text". Пошаговая дает "abctetetetextbc", а мгновенная - "abctextaabc". С одной стороны, мгновенная лучше, так как заемняет только существующие подстроки, но с другой - может стать неопределенной, напрмер, в таком случае: В строке "matata" заменить "ata" на "scsi". Она может вернуть (одинаково логично с точки зрения существования заменяемой подстроки) как "mscsita", так и "matscsi". Вам какой способ нужен? Не могли бы поподробнее объяснить как работает пошаговая замена, почему результатом именно будет "abctetetetextbc", а не "abctextbc" Начальная строка: "abcxtaaabc" Находим первое вхождение строки "xta" - начиная с 4-го символа Заменяем на "text" - получается "abctextaabc" Находим первое вхождение строки "xta" - начиная с 6-го символа Заменяем на "text" - получается "abctetextabc" Находим первое вхождение строки "xta" - начиная с 8-го символа Заменяем на "text" - получается "abctetetextbc" Находим первое вхождение строки "xta" - вхождений нет, замена окончена Тогда в моём случае пошаговая замена выглядит предпочтительней. Replace производит мгновенную замену. Чтоб сделать из нее пошаговую, надо вызывать его примерно так: Private Sub Command1_Click() a = "abcxtaaaabc" b = "xta" c = "text" Do While Replace(a, b, c) <> a a = Replace(a, b, c) Print a Loop End Sub Страница: 1 |
Вопрос: вопрос по replace
Добавлено: 08.12.03 23:50
Автор вопроса: olegator
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Gogic
Вопросов: 38
Ответов: 121
Профиль | | #1
Добавлено: 09.12.03 15:40
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 09.12.03 16:01
Номер ответа: 3
Автор ответа:
olegator
Вопросов: 3
Ответов: 4
Профиль | | #3
Добавлено: 10.12.03 20:52
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 11.12.03 06:09
Номер ответа: 5
Автор ответа:
olegator
Вопросов: 3
Ответов: 4
Профиль | | #5
Добавлено: 11.12.03 17:57
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 12.12.03 17:01
Номер ответа: 7
Автор ответа:
olegator
Вопросов: 3
Ответов: 4
Профиль | | #7
Добавлено: 12.12.03 20:50
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 14.12.03 04:56