VBA и операции с текстом...
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA и операции с текстом...

VBA и операции с текстом...

Ответ
Поиск в этой теме
Непрочитано 17.08.2005, 17:39 #1
VBA и операции с текстом...
Хотабыч
 
Регистрация: 02.06.2005
Сообщений: 15

VBA это не PERL!
после недолгого общения с ним
я понял что для работы с текстом
здесь существует скудные возможности
не то что в Perle.
Так вот подскажите мне plz
как разбить строку типа:
+100+500-300+20+
на 4 элемента массива .... типа того
dim d(3)
d(0) = 100
d(1) = 500
d(2) = -300
d(3) = 20

если ты из СПб то с меня пЫво!!!
Просмотров: 4371
 
Непрочитано 17.08.2005, 22:19
#2
cadhelp

autocad
 
Регистрация: 16.12.2004
Сообщений: 5


VB конечно не PERL, ну и PERL не VB, в одом 4 буквы во втором только две,значит проще и меньше ошибок )

я использую для разделения вот ето
параметры возвращаемый масив,строка,делиметер

Код:
[Выделить все]
dim b
a="1+2+3+4+5+6"
strToArr(b, a, "+")

Sub strToArr(arr, ByVal str As String, delim As String)
ReDim arr(0)
    For i = 0 To Len(str) - 1
        pos = InStr(str, delim)
        ReDim Preserve arr(0 To i)
        If pos = 0 Then
            arr(i) = str
            Exit For
        Else
            arr(i) = Mid(str, 1, pos - 1)
            If pos = 0 Then Exit For
            str = Mid(str, pos + 1)
        End If
    Next
End Sub
для ваших целей, ее надо переделать, вместо
pos = InStr(str, delim)
читаь каждую букву, проверить IsDigit() и заполнить масив
][/code]
cadhelp вне форума  
 
Непрочитано 17.08.2005, 22:52
#3
C1


 
Регистрация: 13.06.2005
Сообщений: 314


Все можно сделать проще:

Public Function strToArr(Arr() As String, S As String)
S = Replace(S, "-", "+")
Arr = Split(S, "+")
End Function

Пример использования:

Private Sub Command1_Click()
Dim Arr() As String
strToArr Arr, "+100+500-300+20+"
MsgBox Arr(1)
End Sub
C1 вне форума  
 
Непрочитано 18.08.2005, 10:09
#4
algol2

конструктор
 
Регистрация: 23.06.2005
Украмна
Сообщений: 9


> C1

А если MsgBox Arr(3) ?
algol2 вне форума  
 
Автор темы   Непрочитано 18.08.2005, 13:16
#5
Хотабыч


 
Регистрация: 02.06.2005
Сообщений: 15


спасибо ребята что не запарились
ответить
щас буду пробовать
Хотабыч вне форума  
 
Автор темы   Непрочитано 18.08.2005, 13:45
#6
Хотабыч


 
Регистрация: 02.06.2005
Сообщений: 15


2C1
не много не то что нужно
необходимо что бы массив был
заполнен значениями с соблюдение знака
у тебя получается так что все
числа в массиве положительные: S = Replace(S, "-", "+")
но они ведь могут быть и отрицательные...
в этом вся трудность
вот если можно было бы использовать
регекспы :?
Хотабыч вне форума  
 
Непрочитано 18.08.2005, 15:10
#7
algol2

конструктор
 
Регистрация: 23.06.2005
Украмна
Сообщений: 9


Рочти по С1

Public Function strToArr(Arr() As String, S As String)
S = Replace(S, "-", "#-")
S = Replace(S, "+", "#+")
Arr = Split(S, "#")
End Function

'Пример использования:

Private Sub Command1_Click()
Dim Arr() As String
strToArr Arr, "+100+500-300+20+"
MsgBox Arr(1)
MsgBox Arr(3)
End Sub
algol2 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA и операции с текстом...

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск