Заменить все, кроме чисел в строке vb6 - PullRequest
2 голосов
/ 21 декабря 2011

Я провел свое исследование и видел много сообщений об этом, но не смог найти решение в VB6 так как я могу сделать это в VB6 ?

допустим, я получил строку вроде:

"Когда-то был маленький ребенок, который удивлялся, что уехал дальше, чем на 1000 миль от дома ..."

Я хочу получить только числа"1000" в этой строке, отделенной от строки, и хочу заменить всю строку, но числа должны стоять на месте.

Ответы [ 4 ]

6 голосов
/ 21 декабря 2011

Самый простой способ - пройти строку и скопировать числа в новое:

Function GetNumbers(Value As String) As String
Dim Index As Long
Dim Final As String

  For Index = 1 To Len(Value)
    If Mid(Value, Index, 1) Like "[0-9]" Then
      Final = Final & Mid(Value, Index, 1)
    End If
  Next

  GetNumbers = Final
End Function

Результат:

?GetNumbers("abc12def345")
12345

Это неэффективно с длинными строками, когда много цифр.

2 голосов
/ 21 декабря 2011

Опираясь на ответ Динны:

Function GetNumbers(Value As String) As String
Dim Index As Long
Dim Digit As String
Dim Final As String
Dim Count As Long

  Count = 1
  GetNumbers = Space(Len(Value))
  For Index = 1 To Len(Value)
    Digit = Mid(Value, Index, 1)
    If Digit Like "[0-9]" Then
      Mid(GetNumbers, Count, 1) = Digit
      Count = Count + 1
    End If
  Next

  GetNumbers = Left(GetNumbers, Count - 1)
End Function

Эта функция должна быть O(n)

?GetNumbers("abc12def345")
12345
0 голосов
/ 27 августа 2018
nStr = "abc12def345"
For X = 1 To Len(nStr)
    If IsNumeric(Mid(nStr, X, 1)) = True Then
        nNum = nNum & Mid(nStr, X, 1)
    End If
Next X


MsgBox nNum
0 голосов
/ 25 июня 2015

Вы можете использовать регулярные выражения:

Dim NumExp As New RegExp

NumExp.Pattern = "\D"
NumExp.Global = True

strOutput = NumExp.Replace(strWhatToReplace, strReplaceWithWhat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...