Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Функция 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. Поскольку замену зачастую нужно производить не с самого начала, а получать хочется полную строку, то мы написали свой вариант этой функции:

    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)






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.