Текущий архив: 2005.03.06;
Скачать: CL | DM;
Вниз
Работа со строками в VBA Найти похожие ветки
← →
Lamer123 (2005-02-14 13:19) [0]Подскажите плиз, как на бейсике будет выглядеть такое (абстракный пример, где s - переменная типа String)
for i:=1 to 10 do
if s[i]="A" then s[i]=s[i+1];
Заранее спасибо :)
← →
Lamer123 (2005-02-14 15:01) [1]люди, подскажите, ну неужели никто VB не знает? А то я кроме MID ничего путного не нашел, дак это как то громозко получается...
← →
Digitman © (2005-02-14 15:29) [2]
> кроме MID ничего путного не нашел
и не найдешь.
string-тип данных в VBA не позволяет обращаться к символам строки как к элементам массива (подобно Паскалю)
если это учебная задача - мотай на ус ..
если практическая - не в тот огород гребешь..
← →
vertal © (2005-02-14 15:42) [3]Я тоже всё делал через Mid$.
По-моему, в VBA по-другому и нельзя.
Или можно использовать из kernel32.dll функции работы со строками и памятью (типа RtlMoveMemory, lstrcmpA и другие), но это будет еще более громоздко и менее надежно, к тому же функции типа StrPos или StrScan я там не нашел.
← →
vertal © (2005-02-14 15:43) [4]Я тоже всё делал через Mid$.
По-моему, в VBA по-другому и нельзя.
Или можно использовать из kernel32.dll функции работы со строками и памятью (типа RtlMoveMemory, lstrcmpA и другие), но это будет еще более громоздко и менее надежно, к тому же функции типа StrPos или StrScan я там не нашел.
← →
Anatoly Podgoretsky © (2005-02-14 15:43) [5]Lamer123 (14.02.05 15:01) [1]
Чем-же громоздко, почти одинаково if Mid() = "a" then
← →
Digitman © (2005-02-14 16:06) [6]
> Anatoly Podgoretsky © (14.02.05 15:43) [5]
там ведь дальше по ходу текста (s[i]=s[i+1]) задница во всю ширину Васика вылазит) ...
хотя автора, чувствуется, это нимало не заботит
← →
DimaK (2005-02-14 18:49) [7]2Digitman
Задачка рабочая (ну там со строками возня всякая...), а примерчик я так накидал, чтобы понятнее было о чем речь...
хотя автора, чувствуется, это нимало не заботит
заботит, а вдруг мой макрос увидит какой спец по VBA - чтобы стыдно не было.
Ведь согласитесь, смешно на паскале писать s[i]=s[i+1] как s:=copy(s,1,i-1)+copy(s,i+1,1)+copy(s,i+1,length(s)) ... :)
← →
Lamer123 (2005-02-14 19:02) [8]2vertal
к тому же функции типа StrPos или StrScan я там не нашел.
а где не нашел? в kernel32? А то в VBA есть стандартная функция InStr на эту тему..
← →
palva © (2005-02-14 19:03) [9]Можно одним оператором выложить строку в байтовый массив, а потом, обработав, положить обратно. Только надо учитывать, что каждый символ занимает два байта. Стоит поэкспериментировать, измеряя время выполнения, чтобы понять стоит ли игра свеч.
Dim s As String
Dim b() As Byte
s = "abcde"
b = s
t = b(0): b(0) = b(8): b(8) = t
s = b
MsgBox s " ebcda
← →
palva © (2005-02-14 19:12) [10]> а вдруг мой макрос увидит какой спец
Вообще считается круто использовать регулярные выражения. Они как раз предназначены для хитрой обработки строк и поиска символов. Но для эффективной работы к RegExp надо привыкнуть.
Страницы: 1 вся ветка
Текущий архив: 2005.03.06;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.025 c