Hej! Kollar om Ni är vakna funkar detta ? Nix, det tar bort alla nollor, inte bara de första. Eftersom du (Sven) frågar. Jag förstod att Ni skulle se det ;-) Jag visste att detta skulle trigga igång er :) <b>Så här blev min klumpiga lösning som funkar</b> Jag kommer att använda Martins lösning, det är den smidigaste. <b>Martins förslag var väl mycket bättre? </b> Vet inte om det även fungerar i vanlig VB... Klart jag skall använda din också lite Sven Åke, glad nu? Här är en funktion som använder Reguljära Uttryck. Är det inte overkill med reguljära uttryck i detta fallet. Jag uppskattar att det tar längre tid att parsa uttrycket än att köra föreslagna funktioner. Jo, det är nog lite overkill men det är ett alternativ, vilket också går att bygga ut om man vill ha mer funktionalitet...En funktion för att ta bort inledande nollor i sträng
Några ideer till en funktion som filtrerar bort alla inledande nollor i en sträng?
Tex "0000012ABC" skall bli "12ABC"
Mvh
BoSv: En funktion för att ta bort inledande nollor i sträng
<code>
Option Explicit
Private Sub Command1_Click()
Dim newStr As String
Dim oldStr As String
oldStr = "0000012ABC"
newStr = Replace(oldStr, "0", vbNullString)
MsgBox newStr
End Sub
</code>Sv:En funktion för att ta bort inledande nollor i sträng
Pova detta
Do while left(str,1) = "0"
str = mid(str,2)
loopSv:En funktion för att ta bort inledande nollor i sträng
Njaaaaeeee.....beror på.
Om det finns fler nollor i strängen än de i början, så kommer den att fungera "för" bra.
Annars ok.
//HåkanSv: En funktion för att ta bort inledande nollor i sträng
Så här blev min klumpiga lösning som funkar
<code>
Option Explicit
Private Sub Command1_Click()
Dim oldStr As String
Dim newStr As String
Dim checkByte As Byte, i As Long
oldStr = "0000012ABC"
Do
i = i + 1
checkByte = Asc(Mid$(oldStr, i))
Loop Until checkByte <> 48
newStr = Right$(oldStr, Len(oldStr) - i + 1)
MsgBox newStr
End Sub
</code>Sv:En funktion för att ta bort inledande nollor i sträng
Tack för hjälpen!
/BoSv:En funktion för att ta bort inledande nollor i sträng
Martins förslag var väl mycket bättre?
ThomasSv: En funktion för att ta bort inledande nollor i sträng
BoSv:En funktion för att ta bort inledande nollor i sträng
Visst var den det,det är därför Vi bryter våra snabba tankar med varandra.
Bo ligger illa till kommer inte hjälpa honom efter detta uttalande ;-)
Visst var min lösning lite bra ??? :-)
Jag strävar alltid efter att presentera en körbar lösning.Sv: En funktion för att ta bort inledande nollor i sträng
I VB.NET kan man använda sig av LTrim("0").
Så testa om det fungerar, alltså i stil med följande...
<code>
Text = LTrim(Text, "0")
</code>
Mvh,
Thomas
EDIT:
Hittade info om att det inte är samma i gamla VB, så det är bara att ignorera mitt ;)Sv: En funktion för att ta bort inledande nollor i sträng
Public Function LTrimZero(Value As String) As String
Dim i As Long
For i = 1 To Len(Value)
If Mid(Value, i, 1) <> "0" Then
LTrimZero = Mid(Value, i)
Exit For
End If
Next
End Function
Sv: En funktion för att ta bort inledande nollor i sträng
BoSv:En funktion för att ta bort inledande nollor i sträng
<code>
Private Function TrimStart(ByVal Text As String) As String
Dim RegExp As Object
RegExp = CreateObject("VBScript.RegExp")
With RegExp
.Global = True
.IgnoreCase = True
.Pattern = "^0*(.*)$"
Text = .Replace(Text, "$1")
End With
Set RegExp = Nothing
TrimStart = Text
End Function
</code>
/ThomasSv: En funktion för att ta bort inledande nollor i sträng
Sv:En funktion för att ta bort inledande nollor i sträng
Har inte sagt att det är det bästa alternativet.
/Thomas