text zoeken en kopieeren

Status
Niet open voor verdere reacties.

luck7

Gebruiker
Lid geworden
10 feb 2009
Berichten
791
hallo

ik heb een code nodig waarmee ik in een string naar een woord kan zoeken.

ik heb deze code:
Code:
        Dim sFind As String

        sFind = InputBox(TextBox1.Text, "Search...")
        If sFind > "" Then
            TextBox2.Text = sFind
        Else : MsgBox("You did not enter anything")
            Exit Sub
        End If
maar dan komt er een inputbox waar door de user wat moet ingeven en dat wil ik niet.

en eigenlijk moeten de 2 letters die links en rechts van dat woord staan er ook nog bij. het gaat namelijk om coördinaten dus bv.

: en dan komt er 12:34 uit

help?

BVD
Luck
 
Bedoel je dit?

[CPP]If TextBox1.Text.Contains("12:34") Then
MsgBox("Gevonden!")
End If[/CPP]
 
Nee want de 123 en 4 kunnen ook anders zijn. En de waarde die wordt gevonden moet ik kunnen gebruiken.
 
Je bent niet echt duidelijk in wat je nu precies wilt. Hoe wil je bijvoorbeeld het woord dat je zoekt ingeven?
 
Er moet eigenlijk altijd naar een : worden gezocht.
dan moet de gevondene : samen met de 2 tekens die daar links en rechts naast staan worden gekopierd zodat ik ze in een textbox kan zetten.
 
Ok, dat is duidelijk en ook simpel. Een voorbeeld kan ik wel voor je maken als ik vanavond thuis ben. Ik zit nu op mn iPad maar dat kan iemand anders hier ook wel.
 
En als de koordinaten meer dan 2 tekens links of rechts naast de : hebben, weet je dan nog iets waardoor deze ook worden gekopieerd? Niet dat er voor de koordinaten een woord staat en de helft daarvan wordt mee gekopieerd als de koordinaten koeter zijn.
Snap je :)
 
Ja, snap ik en is geen enkel probleem.
 
Hier de code die 2 tekens links ervan en 2 tekens rechts ervan haalt en in een nieuwe string stopt:

rgTli.png


PHP:
        Dim Woord As String = "Ik ben Capt:ainBri van HelpMij.nl"
        Dim Tekens As String = Woord.Substring(Woord.IndexOf(":") - 2, 5)

Zoekt eerst naar een dubbelepunt, daarna haalt hij de tekens tussen index - 2 (1e 2 letters) en 5 (lengte in totaal = 2 tekens + : + 2 tekens = 5 tekens) op.

En als je de gebruiker zelf wilt laten kiezen:

PHP:
        Dim ZoekParam As String = InputBox("Teken/Woord: ")
        Dim Woord As String = "Ik ben Capt:ainBri van HelpMij.nl"
        Dim Tekens As String = Woord.Substring(Woord.IndexOf(ZoekParam) - 2, 5)

Succes ermee ^^
 
Laatst bewerkt:
ok. hartstikke bedankt!
en bestaat er dan ook de mogelijkhijd om de eerst gevondene : en die daarna (Koordinaten 2x : ) te verwijderen uit de string. anders worden alleen de eerste koordinaten gevonden. het kan namelijk voorkomen dat er meerde koordinaten in de string staan. of ben ik nu lastig XD

heb nu dit:

Code:
 On Error GoTo Errorhandler

        Dim SearchWithinThis As String = (WebBrowser1.Document.Body.InnerText)
        Dim result As String = SearchWithinThis.Substring(SearchWithinThis.IndexOf(":") - 2, 9) '9 omdat dat de max. lengte van de koordinaten is. de code hieronde filter letters er dan uit.


        Dim illegalChars As Char() = "!@#$%^&*(){}[]""_+<>?/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()
        Dim sb As New System.Text.StringBuilder

        For Each ch As Char In result
            If Array.IndexOf(illegalChars, ch) = -1 Then
                sb.Append(ch)
            End If
        Next

        MsgBox(sb.ToString)

Errorhandler:
        MsgBox("Keine Koordinaten gefunden")

Bedankt
 
Jazeker dat kan:

PHP:
        Dim ZoekParam As String = InputBox("Teken/Woord: ")
        Dim Woord As String = "Ik ben Capt:ainBri van HelpMij.nl"
        Dim Tekens As String = Woord.Substring(Woord.IndexOf(ZoekParam) - 2, 5)
        Woord = Woord.Replace(Tekens, "")
 
Volgens mij kun je hier het beste regular expressions voor gebruiken.

Dim Woord As String = "Ik ben Capt:ainBri van HelpMij.nl"
Dim regCoord as new System.Text.RegularExpressions.Regex("\w{2}:\w{2}") 'Zoekt in de string naar een het volgende patroon {2 word chars}:{2 word chars}
Dim matches as System.Text.RegularExpressions.Matchcollection = regCoord.Matches(Woord)

'matches bevat nu alle overeenkomsten in de betreffende string
'met regCoord.Replace kun je eventueel ook de betreffende tekst replacen met iets anders
For Each match As Match in matches
'Loop door de matches
Next

Wanneer een coordinaat uit getallen dient te bestaan kun je het volgende gebruiken:
Dim regCoord as new System.Text.RegularExpressions.Regex("\d{2}:\d{2}")

Meer over regular expressions kun je vinden op www.regxlib.com
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan