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

Dragon108

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

hosm

* so what *
18.05.2009
2 442
6
#2
а зачем?
вот таким "прелестным" циклом, например...
Код:
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
 
13.03.2009
625
1
#3
+1
слезно прошу: не делайте этого.
не знаю, зачем это вам нужно - но уверен, что вы изобретаете не самый правильный велосипед.
Действительно уникальные задачи встречаются очень редко. Вашу проблему наверняка кто-то решал. Сформулируйте задачу и, скорее всего, получите нормальное( более эффективное и красивое ) решение.
З.Ы.. динамические массивы, операции со строками - это не те задачи, которые ls решает хорошо. получите тормозной спагетти-код.

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

Dragon108

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

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

hosm

* so what *
18.05.2009
2 442
6
#5
а разве replace не поможет? это из-за него такие извраты с массивом? сделайте статически массив символов латиницы... меняйте его на "0" и сравнивайте результат - если отличается replace, то были лат.символы.
кстати, в клиенте есть же еще яваскрипт, до значений редактируемых полей достучаться вроде можно, а там регулярки есть...
 
13.03.2009
625
1
#6
есть строка, надо отловить все латинские и заменить их, например, на нули (на что меня не важно, главное отслеживать латиницу и заменять её)
вы не ходили по ссылке http://dontpanic82.blogspot.com/2007/10/si...sion-class.html ?
самый системный подход - использовать 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
6 599
277
#7
<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">в мире существуют поклонники http://lurkmore.ru/%D0%98%D0%BD%D0%B4%D1%8...%BA%D0%BE%D0%B4 явные и по-призванию. А так как продукт LDN изобилует подобным - чего ожидать от его изучающих :)
 

Dragon108

Well-known member
19.01.2010
265
0
#8
вы часом не задачу проверки введенных значений решаете? для этого у поля есть input validation, input translation и @Matches - и пусть юзер сам разбираеца с введенным мусором.
Нет, уже имеются документы с такими введенными данными, надо их обработать, заменив латинские символы.
 
D

Darker

#9
Для 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")
 

hosm

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

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

Xalet

Well-known member
08.08.2008
410
0
#11
Код:
	For i=0 To 25
myString = replace(myString,Chr(65+i),"0")
myString = replace(myString,Chr(97+i),"0")
Next
тогда уж как-то так.

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

Omh

Lotus team
04.07.2007
2 210
1
#12
xalet
Думаешь 50 реплейсов будет быстрее, чем один? :)
 

Xalet

Well-known member
08.08.2008
410
0
#13
Думаешь 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

Что это ? :)
Lotus team
10.12.2004
3 346
1
#14
Проще на собаках @ReplaceSubstring(Поле; "a" : "b" : "c" : .. : "Z"; "0").

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

Darker

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

hosm

* so what *
18.05.2009
2 442
6
#18
офф: а Split эффективней заполнения массива в цикле?
 
13.03.2009
625
1
#20
Проще на собаках @ReplaceSubstring(Поле; "a" : "b" : "c" : .. : "Z"; "0").
кстати, про эффективность создания собако-списков через ":" ( типа "a":"b":"c" ) есть небольшое исследование: http://damienkatz.net/2004/11/formula-lang...rty-secret.html
Правда не представляю реальной ситуации, когда именно это станет причиной тормозов.