Hej.Problem i VB
Någon som vet hur man tar bort specialtecken och sedan räknar dessa som fel? Jag håller på med ett program som rättar fel i VB. Programmet fungerar bra förutom att den inte tar bort specialtecken och inte räknar dessa som fel.
Koden under modulen:
Option Explicit
Private Function rensaBort(str As String, bad As String) As String
rensaBort = Replace(str, bad, "")
End Function
Function checktext(sIn As String) As Collection
Dim AntalFel As Integer
Dim sUt As String
Dim i As Integer
Dim rensaBort As String
'Dim forbidden As Integer
'forbidden = "#¤%&/()§£$~¨^1234567890"
AntalFel = 0
sIn = LTrim$(sIn) 'Ta bort eventuella onödiga mellanslag till vänster
sIn = RTrim$(sIn) 'Ta bort eventuella onödiga mellanslag till höger
If Left$(sIn, 1) >= "a" Then 'Kollar om den första bokstaven är liten
AntalFel = AntalFel + 1 'Det första felet
sUt = UCase(Left$(sIn, 1)) 'Byter till stor bokstav i ut-stängen
Else
sUt = sUt & Left$(sIn, 1)
End If
For i = 2 To (Len(sIn) - 1)
If Mid$(sIn, i, 1) <> " " And Mid$(sIn, i, 1) <> "," Then
sUt = sUt & Mid$(sIn, i, 1) 'Kopiera till ut-strängen, mellanslag eller komma tecken
Else
If Mid$(sIn, i, 1) = " " Then
If Mid$(sIn, i + 1, 1) <> " " Then
sUt = sUt & Mid$(sIn, i, 1) 'Mellanslag på rätt ställe
Else
AntalFel = AntalFel + 1 'Dubbla mellanslag
End If
End If
If Mid$(sIn, i, 1) = "," Then
If Not Mid$(sIn, (i + 1), 1) <> " " Then 'Kollar så att det är mellanslag efter komma
sUt = sUt & ","
Else
sUt = sUt & ", " 'Korrekt användande av kommastecken
AntalFel = AntalFel + 1
End If
End If
End If
Next i
If Right(sIn, 1) = "." Or Right$(sIn, 1) = "!" Or Right$(sIn, 1) = "?" Then
sUt = sUt & Right$(sIn, 1) 'Korrekt meningsslut
Else
AntalFel = AntalFel + 1
sUt = sUt & Right$(sIn, 1) & "." 'EJ korrekt meningsslut
End If
Set checktext = New Collection
checktext.Add AntalFel, "AntalFel"
checktext.Add sUt, "Sut"
End Function
Koden under form:
Option Explicit
Private Sub Command1_Click()
Dim svar As Collection 'skapar en collection
Set svar = checktext(Text2.Text)
Text1.Text = svar.Item("AntalFel") 'Skriver ut antal fel i textboxen
Text3.Text = svar.Item("sUt") 'Skriver ut svaret i textboxen
Set svar = Nothing 'Inget svar
End Sub
Private Sub Command2_Click()
Text1.Text = "" 'Rensar fälten
Text2.Text = "" 'Rensar fälten
Text3.Text = "" 'Rensar fälten
End Sub
Fredrik