---
title: "Problem i VB"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/27555-problem-i-vb"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "frecko"
published: "2001-01-02T20:35:00.000Z"
updated: "2001-01-03T11:56:00.000Z"
replies: 2
views: 519
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/27555-problem-i-vb"
---

# Problem i VB

## #1 — frecko, 2001-01-02T20:35Z

Hej.

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

Permalänk: https://www.webforum.nu/p/27555

## #2 — fredrik, 2001-01-03T06:55Z

Ett tips för att söka efter otillåtna teckan är att använda Reguljära Uttryck som du refererar in med "MS VBScript Regular Expressions".

Du kan läsa mer om hur du använder det här: <http://msdn.microsoft.com/scripting/default.htm?/scripting/vbscript/doc/jsgrpregexpsyntax.htm>

Permalänk: https://www.webforum.nu/p/396454

## #3 — frecko, 2001-01-03T11:56Z

Tack.

Men fungerar det inte med något liknande som:
Dim AntalFel As Integer
    Dim sUt As String
    Dim i As Integer
    Dim ch As Integer
    Dim forbiddenChars As String
    
    forbiddenChars = ("!@#$%^&\*()\_+=/""{\[\]¤1234567890")
    
    For ch = 1 To Len(forbiddenChars)
    forbiddenChars = Replace(AntalFel, Mid$(forbiddenChars, ch, 1), "")
    Next ch

    AntalFel = 0

Fredrik

Permalänk: https://www.webforum.nu/p/396455

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/27555-problem-i-vb
