2011-12-21 2 views
2

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

позволяет сказать, что я получил строку как:

«Однажды был маленький ребенок, который задается вопросом о поездке дальше, чем 1000 миль вдали от дома ...»

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

ответ

5

Самый простой способ ходить строку и копировать номера на новый:

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 

Это неэффективно с длинными строками, когда есть много чисел, хотя ,

+0

снова ур удивительным +1 и принятый ответ для простоты , –

2

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

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

И более эффективная версия. Я оставил это как упражнение для читателя, поскольку я ленив: p – Deanna

0

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

Dim NumExp As New RegExp 

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

strOutput = NumExp.Replace(strWhatToReplace, strReplaceWithWhat) 
Смежные вопросы