Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1550 / 1527 / 325
Регистрация: 03.10.2012
Сообщений: 1,558

Функция FindAndReplace (обсуждение)

28.12.2024, 16:00. Показов 3457. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выскажу здесь свои соображения по поводу поста от коллеги edmonsur.
Цитата Сообщение от edmonsur Посмотреть сообщение
На скорость работы не проверял.
А зря . Я проверил. Скорость вашей функции примерно в 20 раз ниже, чем у Replace.
Дело в том, что, как известно, в NET строки неизменяемы. То есть, любое действие со строкой приводит
к созданию в памяти новой строки. Более того, у вас эти действия происходят в циклах. Даже при не очень
больших строках это приведет к росту используемой памяти и замедлению быстродействия.
Так что в данном случае это бесполезный велосипед
6
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2024, 16:00
Ответы с готовыми решениями:

Метод Findandreplace объекта Notesrichtextrange
Требуется заменить несколько слов в поле RichText на другие значения Делаю в цикле так ... Set rtrange = inItemBody.CreateRange() ...

Замена слов в word (FindAndReplace)
Доброго времени суток, помогите пожалуйста, ломаю голову уже продолжительное время, никак не могу найти в чем ошибка. Есть процедура ,...

Обсуждение кода из темы "Готовые решения и полезные коды": Функция MeTka
Всем привет. Цель данной темы обсудить код функции MeTka. В первую очередь скажу что моей целью обсудить код, а не его автора, с...

29
3267 / 3333 / 558
Регистрация: 17.02.2019
Сообщений: 5,238
03.01.2025, 15:23
Студворк — интернет-сервис помощи студентам
Split + Join
VB.NET
1
2
3
4
5
6
7
8
9
10
Dim separatorSplit() As Char = {"А", "а", "Б", "б"}
'Dim separatorSplit() As String = {"символов", "строк"}
 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    TextBox2.Text = SplitJoin(TextBox1.Text) ' передаем функции SplitJoin
End Sub
 
Private Function SplitJoin(text As String) As String
    Return String.Join(String.Empty, text.Split(separatorSplit, StringSplitOptions.RemoveEmptyEntries))
End Function
2
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
03.01.2025, 16:06
В таком виде, как мне кажется, будет более приближено к задаче
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim txt0 As String = "Одномерный массив подстрок массив, подлежащих массив объединению."
    Dim txtNew As String = "####"
    Dim txtOld As String = "мас"
    Label1.Text = txt0
    Label2.Text = SplitReplace(txt0, txtNew, txtOld)
End Sub
 
Private Function SplitReplace(txtBase As String, zNew As String, zOld As String) As String
    Return String.Join(zNew, Strings.Split(txtBase, zOld))
End Function
Миниатюры
Функция FindAndReplace (обсуждение)  
3
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
03.01.2025, 16:28
ovva, а не замеряли скорость работы?
Я себе оформил такой подход через Split+Join в виде Extension, очень удобно, пользуюсь.
Но скорость не измерял и не сравнивал с другими.
0
3267 / 3333 / 558
Регистрация: 17.02.2019
Сообщений: 5,238
03.01.2025, 17:04
Цитата Сообщение от ovva Посмотреть сообщение
В таком виде
точно чёт я переборщил
VB.NET
1
2
3
4
5
6
7
8
9
10
Dim oldValue() As String = {"символов", "строк"}
Dim newValue As String = "#####"
 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    TextBox2.Text = SplitJoin(TextBox1.Text, oldValue, newValue)
End Sub
 
Private Function SplitJoin(text As String, oldvalue() As String, newvalue As String) As String
    Return String.Join(newvalue, text.Split(oldvalue, StringSplitOptions.RemoveEmptyEntries))
End Function
Добавлено через 24 минуты
Я тут подумал, а если много раз к функции обращаться, память не побежит куда не надо.
0
1550 / 1527 / 325
Регистрация: 03.10.2012
Сообщений: 1,558
03.01.2025, 17:10  [ТС]
Цитата Сообщение от ovva Посмотреть сообщение
более приближено к задаче
Я задачу edmonsur понимаю так: не просто замена подстроки, а замена без учета регистра. И в этом вся загвоздка. И здесь не все так просто. Кстати, мой пример это решает.
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
03.01.2025, 18:24
Цитата Сообщение от MrCrown Посмотреть сообщение
не просто замена подстроки, а замена без учета регистра
Не вижу проблемы. Измените функцию
VB.NET
1
2
3
Private Function SplitReplace(txtBase As String, zNew As String, zOld As String) As String
    Return String.Join(zNew, Strings.Split(txtBase, zOld,, CompareMethod.Text))
End Function
Миниатюры
Функция FindAndReplace (обсуждение)  
3
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
03.01.2025, 19:46
Цитата Сообщение от Yury Komar Посмотреть сообщение
Но скорость не измерял и не сравнивал с другими.
Думаю, что производительность SplitReplace(with CompareMethod.Binary) мало чем отличается от традиционного Replace, а вот SplitReplace(with CompareMethod.Text) будет хуже.
0
 Аватар для PAnT0P
1492 / 587 / 107
Регистрация: 26.03.2012
Сообщений: 1,039
12.01.2025, 00:53
Ни как не могу понять, чем вас не устраивает стандартная функция Replace, что с ней не так?

Кликните здесь для просмотра всего текста
VB.NET
1
2
 Dim Stroka As String = "Одномерный массив подстрок МАссив, подлежащих массив объединению"
 Stroka = Replace(Stroka, "мас", "####",,, CompareMethod.Text)
4
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
12.01.2025, 15:11
Цитата Сообщение от PAnT0P Посмотреть сообщение
чем вас не устраивает стандартная функция Replace
А кто сказал что не устраивает?
1
12.01.2025, 15:29

Не по теме:

Зачем тогда изобретать велосипед?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2025, 15:29

С++ идиомы - обсуждение
Тема создана для вопросов и обсуждений С++ идиом

Обсуждение Бейсика
Сообщения были перенаправлены с другой темы, т.к. вопрос вышел за рамки топика. Тут можно продолжать дискуссию про Бейсик,...

Обсуждение сборки
Всем привет. Подскажите по поводу сборки, оптимальна ли, может что лучше есть в требуемую ценовую политику. Друзья посоветовали данную...

Обсуждение ИС Дракон
Учитывая интерес (как собственный, так и сообщества) к данному средству, решил вынести в отдельную тему, т.к. вобсуждении статьи очень...

Обсуждение по книге
Как происходит выбор песни по переменной tittle Где мы используем переменную artist Не пойму как должны работать методы setTitle ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru