![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Функция Replace - замена всех вхождений подстроки
Позволяет заменить не только первое вхождение искомой подстроки, но и все такие вхождения, не требуя организации цикла. С другой стороны, можно ограничиться только заменой первого или нескольких первых вхождений. Рассмотрим синтаксис появившейся функции: Replace(expression, find, replace[, start[, count[, compare]]]) Первый аргумент expression задает строковое выражение, результат которого определяет строку-источник, в которой осуществляется замена. Аргументы find и Replace задают заменяемую подстроку и ее новое значение. Аргумент Count определяет число замен. Обычно он равен 1, когда речь идет о замене первого вхождения, или опускается, - в этом случае его значение по умолчанию равно " -1", означающее замену всех вхождений. Аргумент compare имеет обычный смысл. В качестве примера приведем функцию Rep. При копировании программного текста в документ Word появляются последовательности пробелов, отражающие структурную запись процедур и функций. Но появление в документах Word двух пробелов подряд считается смертельным грехом. Заменять пробелы табуляцией можно и руками, но, конечно же, лучше написать макрос, решающий эту и другие задачи по приведению текста в форму, требуемую редакцией. Вот текст функции, используемой для этих целей: Public Sub Rep() 'Эта процедура преобразует выделенный программный текст 'Заменяя пробелы табуляцией и конец абзаца мягким концом строки Dim TxtRange As String
TxtRange = Selection.Range.Text 'Замена пробелов: 4-х, 3-х и 2-х символом табуляции TxtRange = Replace(TxtRange, " ", vbTab) TxtRange = Replace(TxtRange, " ", vbTab) TxtRange = Replace(TxtRange, " ", vbTab)
'Замена концов абзаца Selection.Range.Text = Replace(TxtRange, VBA.Chr(13), VBA.Chr(11)) End Sub
У Replace есть одна особенность, на которую следует обратить внимание, - возвращаемый ею результат, начинается не с первой позиции, а с позиции, заданной аргументом Start. Так что помимо своей основной роли она еще обрубает голову строки, если только Start, отличается от 1. Поскольку замену зачастую нужно производить не с самого начала, а получать хочется полную строку, то мы написали свой вариант этой функции: Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение Public Function MyReplace(ByVal Expr As String, ByVal find As String, _ ByVal rep As String, Optional ByVal start As Long = 1, Optional ByVal count As Long = -1, _ Optional ByVal compare As VbCompareMethod = vbBinaryCompare) As String
'Вызов стандартной функции Replace If start = 1 Then MyReplace = replace(Expr, find, rep, start, count, compare) Else MyReplace = VBA.Left(Expr, start - 1) & replace(Expr, find, rep, start, count, compare) End If End Function
Вот результаты нескольких вызовов Replace и MyReplace в окне отладки: ? Replace(" A+B *(D*B +B)", " B", " C", 4, 1) *(D*C +B) ? MyReplace(" A+B *(D*B +B)", " B", " C", 4, 1) A+B *(D*C +B) ? MyReplace(" A+B *(D*B +B)", " B", " C", 4) A+B *(D*C +C)
|