Mam ciąg "ololo123". Potrzebuję uzyskać pozycję pierwszej cyfry - 1. Jak ustawić maskę wyszukiwania?VBA. Jak znaleźć pozycję pierwszej cyfry w ciągu znaków
Odpowiedz
Coś jak to powinno wystarczyć dla Ciebie:
Public Function GetPositionOfFirstNumericCharacter(ByVal s As String) As Integer
For i = 1 To Len(s)
Dim currentCharacter As String
currentCharacter = Mid(s, i, 1)
If IsNumeric(currentCharacter) = True Then
GetPositionOfFirstNumericCharacter = i
Exit Function
End If
Next i
End Function
Następnie można nazwać tak:
Dim iPosition as Integer
iPosition = GetPositionOfFirstNumericCharacter("ololo123")
Możesz uprościć funkcję. Tak naprawdę nie potrzebujesz 'currentCharacter'; twoim testem może być 'If IsNumeric (Mid (s, i, 1)) Then ...' – e100
@ e100 - bardzo prawdziwe. Złamanie go sprawia, że jest on bardziej czytelny i to jest właśnie dla mnie, gdy odpowiadam na pytanie o ten poziom złożoności, ponieważ pracuję na podstawie tego, że OP może potrzebować prostszego/klarownego kodu, aby pomóc w zrozumieniu =) – Rob
Jeśli prędkość jest problem, to będzie działać nieco szybciej niż rabuje (noi Rob):
Public Sub Example()
Const myString As String = "ololo123"
Dim position As Long
position = GetFirstNumeric(myString)
If position > 0 Then
MsgBox "Found numeric at postion " & position & "."
Else
MsgBox "Numeric not found."
End If
End Sub
Public Function GetFirstNumeric(ByVal value As String) As Long
Dim i As Long
Dim bytValue() As Byte
Dim lngRtnVal As Long
bytValue = value
For i = 0 To UBound(bytValue) Step 2
Select Case bytValue(i)
Case vbKey0 To vbKey9
If bytValue(i + 1) = 0 Then
lngRtnVal = (i \ 2) + 1
Exit For
End If
End Select
Next
GetFirstNumeric = lngRtnVal
End Function
Możesz spróbować regex, a wtedy będziesz miał dwa problemy. Moja VBAfu nie jest do tabaki, ale dam mu szansę:
Function FirstDigit(strData As String) As Integer
Dim RE As Object REMatches As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "[0-9]"
End With
Set REMatches = RE.Execute(strData)
FirstDigit = REMatches(0).FirstIndex
End Function
Następnie wystarczy połączyć go z FirstDigit("ololo123")
.
+1 Widzę, że mieliśmy podobne myśli, byłeś trochę szybszy! –
Nie wiesz, od środowiska, ale to działało w programie Excel 2010
'Added reference for Microsoft VBScript Regular Expressions 5.5
Const myString As String = "ololo123"
Dim regex As New RegExp
Dim regmatch As MatchCollection
regex.Pattern = "\d"
Set regmatch = regex.Execute(myString)
MsgBox (regmatch.Item(0).FirstIndex) ' Outputs 5
I rzeczywiście mają taką funkcję:
Public Function GetNumericPosition(ByVal s As String) As Integer
Dim result As Integer
Dim i As Integer
Dim ii As Integer
result = -1
ii = Len(s)
For i = 1 To ii
If IsNumeric(Mid$(s, i, 1)) Then
result = i
Exit For
End If
Next
GetNumericPosition = result
End Function
Tutaj jest lekka i szybka metoda, która pozwala uniknąć uzupełnień regex/referencyjnych, w związku z tym pomoc w zakresie kosztów ogólnych i transportu powinna stanowić zaletę.
Public Function GetNumLoc(xValue As String) As Integer
For GetNumLoc = 1 To Len(xValue)
If Mid(xValue, GetNumLoc, 1) Like "#" Then Exit Function
Next
GetNumLoc = 0
End Function
- 1. R: jak znaleźć pierwszą cyfrę w ciągu znaków
- 2. JavaScript: Jak zdobyć pierwsze 4 cyfry w ciągu znaków?
- 3. Get pozycji pierwszej litery w ciągu znaków za pomocą php
- 4. Jak uzyskać pozycję dopasowania Regex w ciągu znaków?
- 5. Jak znaleźć duplikaty w ciągu znaków?
- 6. Jak znaleźć częstotliwość znaków w ciągu znaków w Haskell?
- 7. Wstawianie do ciągu znaków Excel VBA
- 8. znaleźć e-maile w ciągu znaków
- 9. Jak znaleźć ostatnie wystąpienie zestawu znaków z ciągu znaków
- 10. W SQL Server można znaleźć pierwszą liczbę w ciągu znaków?
- 11. Jak liczyć zestawy określonych znaków w ciągu znaków
- 12. Jak znaleźć jedną liczbę w ciągu znaków w Pythonie?
- 13. Jak znaleźć wszystkie podciągi z ciągu znaków w PHP
- 14. Jak znaleźć wszystkie możliwe ciągi w ciągu znaków?
- 15. jak znaleźć najdłuższy ciąg w ciągu znaków [] używając LINQ
- 16. jak znaleźć liczbę wystąpień podciągu w ciągu znaków vb.net
- 17. Jak przekonwertować cyfry na łańcuch znaków?
- 18. Formatowanie ciągu znaków na 10 znaków
- 19. znaleźć wszystkie cyfry między znak w python
- 20. Jak znaleźć pozycję kursora w JTextArea
- 21. Jak znaleźć pozycję opiekuna w widoku NSTextView?
- 22. Jak znaleźć pierwszego znaku ciągu znaków bez użycia metody API
- 23. Znaleźć drugie wystąpienie podciągu w ciągu znaków w Javie
- 24. Używając JavaScript, aby znaleźć najczęstsze słowa w ciągu znaków?
- 25. Jak znaleźć liczbę słów w ciągu?
- 26. Jak znaleźć typ zwrotu w VBA
- 27. Jak znaleźć różnicę między datami w VBA
- 28. Zliczanie liczby znaków w ciągu znaków
- 29. (Ruby) Czy istnieje funkcja do łatwego znajdowania pierwszej liczby w ciągu znaków?
- 30. Instrukcja SQL, aby znaleźć ostatnie słowo w ciągu znaków
@ Dziękuję, usunąłem uwagę. – Fosco