komt meer dan 1x voor

Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Ik ben op zoek naar een functie om te bepalen of een string uit unieke tekens bestaat ofniet. Ik heb nu dit, maar vroeg me af of het niet efficienter kon.

Code:
    Public ReadOnly Property ContainsDoubleChars() As Boolean
        Get
            ContainsDoubleChars = False
            For Each chr As Char In Me.Text
                If Me.Text.IndexOf(chr) <> Me.Text.LastIndexOf(chr) Then Return True
            Next
        End Get
    End Property

Alvast bedankt :)
 
beetje aparte property, maar het lijkt me makkelijker om er gewoon een function van te maken.

Public Class Form1

Public Function ContainsDoubleChars(ByVal TextString As String) As Boolean
Dim Bool As Boolean

For Each chr As Char In TextString
If TextString.IndexOf(chr) <> TextString.LastIndexOf(chr) Then Exit For
Next
Return Bool

End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = ContainsDoubleChars("aabcdefg")
End Sub
End Class
 
Ik heb die property of functie nodig in een class, dus het maakt niet echt veel uit hoe ik het doe. Wat ik wel niet snap is hoe Bool een waarde krijcht in jouw variant van mn functie :confused:
 
Label1.Text = ContainsDoubleChars("aabcdefg")
Je roept eerst de functie aan ,

Public Function ContainsDoubleChars(ByVal TextString As String) As Boolean
Je geeft hier aan dat de return value een Boolean moet zijn.

Dim Bool As Boolean
Hier geeft je een willekeurige var de waarde Boolean

Return Bool
Hier geeft je de Variabele true/false mee

Label1.Text = ContainsDoubleChars("aabcdefg")
Hier wordt label1.text dus true of false
 
Ja, geen toekening aan Bool dus. Zo geeft je functie steeds False terug als ik het goed heb ;)

Is ook niet echt zinnig dat je een apparte boolean aanmaakt, aangezien je er al een hebt, je functie. Dit is een hele hoop efficienter lijkt me.

Code:
    Public Function ContainsDoubleChars() As Boolean
            ContainsDoubleChars = False
            For Each chr As Char In Me.Text
                If Me.Text.IndexOf(chr) <> Me.Text.LastIndexOf(chr) Then Return True
            Next
    End Property

Mijn vraag is ofdat ik Me.Text.IndexOf(chr) <> Me.Text.LastIndexOf(chr) niet kan vervangen door iets efficienters (een method die al in class string zit), of zelf gewoon de hele functie kan laten vallen als er al een soortgelijke al in het framework zit :)
 
je kan niet gewoon return in je code zetten (vroeger wel) daar moet een variabele aan gekoppeld zijn.
Maar om je vraag te beantwoorden , dit lijkt me wel de simpelste oplossing...
 
er is toch een waarde aan gekoppeld in mn code? namelijk True. probleem is dat er in jouw code nix zinning teruggegeven word.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan