Hejsan!! Här är ett mycket enkelt exempel: Fick det att funka som jag ville, efter lite om och men :)Fula ord filter
Håller på med en Bot till IRC (Själva boten är klar men läger fortfarande till kommandon).
Nu undrar jag hur man på ett enkelt sätt kan göra ett filter som upptäcker fula ord.
Den ska inte ta t.ex. "assume" som en fult ord på grund av dem tre första bokstäverna.
Utan jag vill att den ska kolla hela ordet och inte bara en del av ordet. Så om jag skulle skriva, ursäkta franskan: "Hello, ass" så ska den ta den men inte om man skriver:"Assume that the sky is blue".
Någon som har en ide hur man kan göra det på ett enkelt sätt?
Jag har försökt med att först kolla om något av de bokstavs kombinationer finns i den text som skickas och sedan leta reda på eventuella mellanslag föra och efter träffen. Men har inte fått det att funka :(
Tacksam för eventual kod eller sida som beskriver hur man kan göra.
Johan ASv: Fula ord filter
Function Censur(Text As String) As String
Dim RegExp As RegExp
Dim words
words = Array("fan", "jävla", "jävlar", "helvete")
Set RegExp = New RegExp
RegExp.Global = True
RegExp.MultiLine = True
RegExp.IgnoreCase = True
RegExp.Pattern = "\b" + "(" + Join(words, "|") + ")" + "\b"
Censur = RegExp.Replace(Text, "$1*fult ord*$3")
End Function
Private Sub Command1_Click()
Text2.Text = Censur(Text1.Text)
End Sub
Eller om du istället bara vill ersätta mittersta bokstäverna med "*", "fan" blir "f*n" och "helvete" blir "h*****e":
Function Censur(Text As String) As String
Dim words
Dim result As String
Dim RegExp As RegExp
Dim match As match
result = Text
words = Array("fan", "jävla", "jävlar", "helvete")
Set RegExp = New RegExp
RegExp.Global = True
RegExp.MultiLine = True
RegExp.IgnoreCase = True
RegExp.Pattern = "\b" + "(" + Join(words, "|") + ")" + "\b"
For Each match In RegExp.Execute(Text)
Mid(result, match.FirstIndex + 2, match.Length - 2) = String(match.Length - 2, "*")
Next
Censur = result
End Function
Denna kod funkar bara i vb och inte i vbscript då du inte kan använda mid för att sätta tecken på en position i en sträng.
Sv: Fula ord filter
Modifierad koden en aning så att den ersätter eventualle fula ord med <:>. koden som kallar functionen om den finns i texten, om den gör det kickar boten användaren som skrev det.
Funkar fin fint även om man använder stora och små bokstäver :D
Tackar Tackar för koden :) :): ) :)
Johan A