Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.46 MB
Время: 0.032 c
6-1103436842
Grafsky
2004-12-19 09:14
2005.03.06
Разбор XML


3-1107349942
Топпер
2005-02-02 16:12
2005.03.06
FastReport нумерация строк данных


1-1108898873
шаман
2005-02-20 14:27
2005.03.06
Доступ к символам строки по индексу


14-1108491043
Agent13
2005-02-15 21:10
2005.03.06
MSN и Delphi


1-1108805565
Kladbische
2005-02-19 12:32
2005.03.06
Иконка в ListBox.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский