• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Строку в массив

  • Автор темы Dragon108
  • Дата начала
D

Dragon108

Можно ли как-нибудь взять строку и посимвольно загнать её в массив?
Например строка = "qwertyuiop"? массив: a1 = q , a2 =2, a3 = e и т.д.
Спасибо.
 
H

hosm

а зачем?
вот таким "прелестным" циклом, например...
Код:
if stroka <> "" then
lenstr = len(stroka)
redim arr(0 to lenstr-1) As String
for i=1 to lenstr
arr(i-1) = Mid$(stroka, i, 1)
Next
else
redim arr(0 to 0) As String
end if
 
T

turumbay

+1
слезно прошу: не делайте этого.
не знаю, зачем это вам нужно - но уверен, что вы изобретаете не самый правильный велосипед.
Действительно уникальные задачи встречаются очень редко. Вашу проблему наверняка кто-то решал. Сформулируйте задачу и, скорее всего, получите нормальное( более эффективное и красивое ) решение.
З.Ы.. динамические массивы, операции со строками - это не те задачи, которые ls решает хорошо. получите тормозной спагетти-код.

З.З.Ы. пример самопального велосипеда, ваш же пример кода(из хелпа?):
Код:
if doc.zip(0) like "*[a-z,A-Z]*" then messagebox _  
"zip code field contains a character"
код не работает. "Ё#%;*й▼" - вполне себе такой валидный zipcode по вашему мнению? Проверять надо не отсутствие буков, а наличие только цифр.
 
D

Dragon108

+1
слезно прошу: не делайте этого.
не знаю, зачем это вам нужно - но уверен, что вы изобретаете не самый правильный велосипед.
Действительно уникальные задачи встречаются очень редко. Вашу проблему наверняка кто-то решал. Сформулируйте задачу и, скорее всего, получите нормальное( более эффективное и красивое ) решение.
З.Ы.. динамические массивы, операции со строками - это не те задачи, которые ls решает хорошо. получите тормозной спагетти-код.

З.З.Ы. пример самопального велосипеда, ваш же пример кода(из хелпа?):
Код:
if doc.zip(0) like "*[a-z,A-Z]*" then messagebox _  
"zip code field contains a character"
код не работает. "Ё#%;*й▼" - вполне себе такой валидный zipcode по вашему мнению? Проверять надо не отсутствие буков, а наличие только цифр.

Задача в следующем ... есть строка ... в ней могут содержаться как латинские буквы так и кириллица, надо отловить все латинские и заменить их, например, на нули (на что меня не важно, главное отслеживать латиницу и заменять её) - задача в кратце звучит вот так
 
H

hosm

а разве replace не поможет? это из-за него такие извраты с массивом? сделайте статически массив символов латиницы... меняйте его на "0" и сравнивайте результат - если отличается replace, то были лат.символы.
кстати, в клиенте есть же еще яваскрипт, до значений редактируемых полей достучаться вроде можно, а там регулярки есть...
 
T

turumbay

есть строка, надо отловить все латинские и заменить их, например, на нули (на что меня не важно, главное отслеживать латиницу и заменять её)
вы не ходили по ссылке ?
самый системный подход - использовать java ( или ls2j из ls ).
в UI я бы вообще скормил эту строку javascript-у: stringToValidate.replace( /[a-z,A-Z]/g , "0" )

можно еще replace заюзать( в т.ч. и собачий ). набить циклом массив 27*2 латинский букв - все проще чем перебирать посимвольно и обратно склеивать.

вы часом не задачу проверки введенных значений решаете? для этого у поля есть input validation, input translation и @Matches - и пусть юзер сам разбираеца с введенным мусором.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"ОФФ, индусский код"</div></div><div class="sp-body"><div class="sp-content">в мире существуют поклонники явные и по-призванию. А так как продукт LDN изобилует подобным - чего ожидать от его изучающих :)
 
D

Dragon108

вы часом не задачу проверки введенных значений решаете? для этого у поля есть input validation, input translation и @Matches - и пусть юзер сам разбираеца с введенным мусором.

Нет, уже имеются документы с такими введенными данными, надо их обработать, заменив латинские символы.
 
D

Darker

Для Split, в качестве сепаратора можно и chr(0) пустить
Код:
myStringArray=split(myString,chr(0))
Dim letter(51) As String
For i=0 To 25
letter(i)=Chr(65+i)
letter(26+i)=Chr(97+i)
Next
myStringArray=Replace(myStringArray,letter,"0")
 
H

hosm

Имхо, на скрипте проще myStringReplaced=replace(myString,letter,"0")
уж простите, но зачем ваааще массив для каждого символа исходной строки тут юзать?

Добавлено: PS: split строки по chr(0) - прикольно, не встречала =)
 
X

Xalet

Код:
	For i=0 To 25
myString = replace(myString,Chr(65+i),"0")
myString = replace(myString,Chr(97+i),"0")
Next

тогда уж как-то так.

оффтоп: и где это такие мегазадачи несколько дней решаются?
 
O

Omh

xalet
Думаешь 50 реплейсов будет быстрее, чем один? :)
 
X

Xalet

Думаешь 50 реплейсов будет быстрее, чем один? smile.gif

не думаю =) не нравится идея с массивами... особенно если строки неопределенной длинны.

Код:
Dim myString As String
myString = "fdваыпhg odыпвыпsifj oiosывпавыjgf iodsаыаjg io"
Dim letter(51) As String
For i=0 To 25
letter(i)=Chr(65+i)
letter(26+i)=Chr(97+i)
Next
myString=Replace(myString,letter,"0")
Msgbox myString
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Проще на собаках @ReplaceSubstring(Поле; "a" : "b" : "c" : .. : "Z"; "0").

:)
Для split вместо chr(0) можно просто кавычки использовать - "".
 
D

Darker

Medevic
если строка не в поле? Да и ограничения у собак...
 
H

hosm

офф: а Split эффективней заполнения массива в цикле?
 
T

turumbay

Проще на собаках @ReplaceSubstring(Поле; "a" : "b" : "c" : .. : "Z"; "0").
кстати, про эффективность создания собако-списков через ":" ( типа "a":"b":"c" ) есть небольшое исследование:
Правда не представляю реальной ситуации, когда именно это станет причиной тормозов.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!