Разделка строки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
mark+
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 156
Зарегистрирован: 03.07.2003 (Чт) 0:04
Откуда: Kurgan

Разделка строки

Сообщение mark+ » 03.08.2003 (Вс) 21:37

Код: Выделить всё
Dim Pn as String
Dim N1 as Long
Dim N2 as Long
Dim N3 as Long

Let Pn="S2003TK64, 192M"


'Мне нужно получить в N1 первое число (в примере 2003) в N2 второе число (в примере 64), и в N3 третье число (в примере 192).
'Я не знаю как это сделать. Кто знает подскажите пожалуйста.
:?: :?: :?: [/code]

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 03.08.2003 (Вс) 22:55

Немного сумбурно, но...
Код: Выделить всё
Dim Pn As String
Dim N1 As Long
Dim N2 As Long
Dim N3 As Long
Dim N(1 To 3) As Long
Dim c As Long
Dim a As String * 1
Dim b As String

Private Sub Form_Load()
N1 = 0
N2 = 0
N3 = 0
N(1 To 3) = 0
Pn = "S2003TK64, 192M"
c = 1
a = ""
b = ""
For i = 1 To Len(Pn)
  If c > 3 Then GoTo m1
  a = Mid(Pn, i, 1)
  If IsNumeric(a) Then
    For j = 1 To Len(Pn)
    If c > 3 Then GoTo m1
    b = Mid(Pn, i - 1 + j, 1)
    If N(c) = 0 Then N(c) = Val(b): GoTo m2
    If IsNumeric(b) Then
    N(c) = Val(N(c)) & Val(b)
    Else
    c = c + 1
    End If
  m2: Next j
  Else
  End If
Next i
m1: N1 = N(1): N2 = N(2): N3 = N(3)
Debug.Print N1 '2003
Debug.Print N2 '64
Debug.Print N3 '192
End Sub


(Если нужно будет найти больше чисел, например, 4, то вместо "Dim N(1 To 3)" "Dim N(1 To 4)", в 11-ой строчке, начиная с Form_Load вместо "If c > 3" "If c > 4" и в конец строчки "m1: N1 = N(1): N2 = N(2): N3 = N(3)" добавить ": N4 = N(4)")
Последний раз редактировалось A.A.Z. 04.08.2003 (Пн) 16:19, всего редактировалось 3 раз(а).
Нет меня больше

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.08.2003 (Пн) 3:16

Код: Выделить всё
Sub Aga(s As String, outArr() As Long)
  Dim i As Long, tmpStr As String, tmpLng As Long, tmpIn As Boolean
  Const sFilter As String = "0123456789"
 
  tmpLng = -1
  For i = 1 To Len(s)
    If InStr(sFilter, Mid$(s, i, 1)) Then
      If Not tmpIn Then tmpLng = tmpLng + 1: tmpIn = True
      tmpStr = tmpStr + Mid$(s, i, 1)
    Else
      If tmpIn Then
        outArr(LBound(outArr) + tmpLng) = Val(tmpStr)
        tmpStr = vbNullString
        tmpIn = False
      End If
    End If
  Next
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 3

    TopList