String in der Textbox abschneiden

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von NeuroParadise.

    String in der Textbox abschneiden

    Hallo zusammen!
    Habe leider hier ein kleines Problem und hoffe, dass jemand so nett sein könnte mir zu helfen.

    Ich habe eine Textbox erstellt in die automatisch die Url eine Bildes eingelesen wird, was wunderbar klappt, allerdings soll nach einem
    bestimmten Wort die URL abgeschnitten werden und das klappt überhaupt nicht…. Ich wurde auf TrimEnd aufmerksam gemacht und
    habe folgenden Script geschrieben.. (nach dem "jpg" sollte der Link abgeschnitten werden und nur bis "jpg" in der Textbox wiedergegeben..)

    Quellcode

    1. Dim PicURL As String
    2. Dim urlend As String
    3. PicURL = e.Data.GetData("System.String")
    4. urlend = PicURL.TrimEnd("jpg")
    5. urltextbox.Text = urlend


    Leider wird das Ende nicht abgeschnitten…. ;( und die Textbox gibt foldendes aus:



    Wie schaffe ich´s, dass alles nach "jpg" abgeschnitten wird? Nur Buchstaben zulassen ist schlecht, da in vielen URL´s auch
    mal Zahlen vorkommen.... Gibt´s da ´ne andere Möglichkeit?


    Danke schon mal im Voraus..
    MFG NeuroParadise

    VB.NET-Quellcode

    1. Dim PicURL As String = e.Data.GetData("System.String")
    2. Dim urlend As String = PicURL.Split(".jpg")(0) & ".jpg"
    3. urltextbox.Text = urlend


    Klappt, solange nur einmal ".jpg" in der URL steht.

    @RodFromGermany: Hatte es nach dem Post gerade editiert ;)

    Greez Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dancger“ ()

    @NeuroParadise: Willkommen im Forum. :thumbup:
    Bei der Lösung von @Dancger: musst Du die Zeichenfolge ".jpg" hinterher explizit dranhängen. Deswegen dies:

    VB.NET-Quellcode

    1. Dim txt = "jghghfhjf.jpg765965897"
    2. Dim txt2 = txt.Substring(0, txt.IndexOf(".jpg") + 4)
    3. MessageBox.Show(txt2)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke
    @Dancger & @RodFromGermany :thumbsup: :thumbsup: :thumbsup:

    habe das Problem wie folgt gelöst:

    Quellcode

    1. Dim PicURL As String = e.Data.GetData("System.String")
    2. Dim txt = PicURL
    3. Dim urlend = txt.Substring(0, txt.IndexOf(".jpg") + 4)
    4. urltextbox.Text = (urlend)


    kann ich auch verschiedene Wörter einsetzen?
    z.B.: wenn "jpg" kommt abschneider, oder wenn "png" kommt dann auch abschneiden usw...

    habe mit "or" versucht

    Quellcode

    1. Dim txt = PicURL & ".jpg765965897" or PicURL & ".png765965897"

    bekomme aber leider eine Fehlermeldung..

    MFG NeurParadise

    NeuroParadise schrieb:

    bekomme aber leider eine Fehlermeldung.
    Klar, denn Or ist ein boolscher Operator.
    Was soll denn bei rauskommen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So wie ich das verstehe, möchte er die URL zuschneiden, egal welcher Datentypen das Bild hat (z.B. png, gif, jpeg, jpg).

    Vielleicht so:

    VB.NET-Quellcode

    1. Dim PicURL As String = e.Data.GetData("System.String")
    2. String SplitWord = ""
    3. Select Case true
    4. Case PicURL.Contains(".png")
    5. SplitWord = ".png"
    6. Case PicURL.Contains(".jpg")
    7. SplitWord = ".jpg"
    8. Case PicURL.Contains(".gif")
    9. SplitWord = ".gif"
    10. Case Else
    11. SplitWord = "ungültig"
    12. End Select
    13. If SplitWord.equals("ungültig") then
    14. MessageBox.Show("Ungültige URL")
    15. Else
    16. Dim urlend As String = txt.Substring(0, txt.IndexOf(SplitWord) + 4)
    17. urltextbox.Text = (urlend)
    18. End If


    Wie du siehst, kannst du ganz einfach weitere Bildtypen hinzufügen.
    Und frag, falls etwas unklar ist ;)

    Edit: Korrektur durch Hinweis von Rod

    Grüsse
    Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dancger“ () aus folgendem Grund: Code Bearbeitung

    Dann solltest Du allerdings noch abtesten, ob es ggf. gar nicht vorkommt, z.B. bei ".jpeg".
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ja genau Dancger

    Wenn ich das Bild in die PictureBox per Drag and Drop reinschiebe, soll die TextBox die URL des Bildes anzeigen, aber nur bis "jpg" oder "png" usw..
    zb:
    wenn die URL lautet: http//www.irgendwas.de/123.jpg?345 oder http//www.irgendwas.de/123.png?345634

    soll Textbox nur das anzeigen:

    http//www.irgendwas.de/123.jpg oder http//www.irgendwas.de/123.png


    @ Dancger: versuche deinen code gleich..
    @RodFromGermany danke für den Tip, wede ich beachten..
    MFG Neuropar
    OK.. Vielen Dank..
    habe das Problem mit eurer HIlfe wie folgt gelöst:

    Quellcode

    1. Dim PicURL As String = e.Data.GetData("System.String")
    2. Dim txt = PicURL
    3. Dim SplitWord As String = Nothing
    4. Select Case True
    5. Case PicURL.Contains(".png")
    6. SplitWord = ".png"
    7. Case PicURL.Contains(".jpg")
    8. SplitWord = ".jpg"
    9. Case PicURL.Contains(".gif")
    10. SplitWord = ".gif"
    11. Case PicURL.Contains(".jpeg")
    12. SplitWord = ".jpeg"
    13. Case Else
    14. SplitWord = "ungültig"
    15. End Select
    16. If SplitWord.Equals("ungültig") Then
    17. MessageBox.Show("Ungültige URL")
    18. Else
    19. Dim urlend As String = txt.Substring(0, txt.IndexOf(SplitWord) + 4)
    20. urltextbox.Text = (urlend)
    21. End If
    22. End Sub


    Danke :thumbsup: echt super hier..

    Habe noch ein weiteres Problem, weiß allerding nicht ob ich die Frage hier stellen soll oder ein neues Thema aufmachen...
    Falls ich neues Thema aufmachen soll, sagt bitte Bescheid..

    Ich habe drei Buttons, der Text der Buttons ist leer und soll über eine InptuBox übernommen werden. Mein Code:

    Quellcode

    1. Dim Name As String = Nothing
    2. Name = InputBox("Namen eingeben:", , , )
    3. If Button1.Text = ("") Then
    4. Button1.Text = Name
    5. Else
    6. Button2.Text = Name
    7. If Button2.Text = Not ("") Then
    8. Button3.Text = Name
    9. End If
    10. End If


    Das Problem ist, dass der erste und der zweite Button werden korrekt beschriftet, in der richtigen Reichenfolge, aber wenn der zweite Button beschriftet ist und ich
    einen dritten Name in der InputBox eingebe, werden automatisch der dritte UND der zweite Button mit der neuen Benenneung beschriftet... dabei soll in diesem Fall nur der dritte Button beschriftet werden... habe ich hier irgendwo ein Denkfehler? oder mache ich hier was ganz falsch....

    MFG NeuroParadise
    1. Wärst du sonett und benutzt die VB-Code anzeige (das vb-tag) das macht das lesen von Code wesentlich einfacher. Siehest du:

    VB.NET-Quellcode

    1. 'Dies ist nur ein Beispielcode mitdem ich ich dir das VB-Tag zeigen möchte.
    2. Dm sString as String = "Test"


    2. Ich bin der Meinung es liegt nur an einem simplen Denkfehler, da sobald Button 1 benannt ist, du ja automatisch zu der Beschriftung von Button2 & Button 3 kommst. Desweiteren ist die zweite If-Abfrage unnötig da du sie mit dem not eigentilich schon wieder aus dem weg räumst, da der Button eine Zeile darüber sowieso schon einen Wert bekommt.

    Edit:// ich weiß nicht ob dies dein Problem löst aber wie wäre es einfach mit nem ElseIf?
    Bzw. Noch eine Frage an dich, was genau willst du jetzt? Beim ersten klicken soll Button1 benannt werden, beim 2. Button2 und beim dritten button3?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Deine Abfrage ist falsch. Du überprüfst denn Wert des Button2 erst, nachdem du den Text gesetzt hast. Somit wird der Text von Button2 immer gesetzt, sobald Button1.Text nicht "" ist.

    Korrekt und übersichtlicher wäre:

    VB.NET-Quellcode

    1. Dim Name As String = InputBox("Namen eingeben:", , , )
    2. If Button1.Text = "" Then
    3. Button1.Text = Name
    4. ElseIf Button2.Text = "" Then
    5. Button2.Text = Name
    6. ElseIf Button3.Text = "" Then
    7. Button3.Text = Name
    8. End If


    BTW: Für das nächste Mal würde ich einen neuen Thread aufmachen (Eigentlich werden Threads mit zwei unterschiedlichen Fragen direkt geschlossen). ;)
    Und wie Gather schon bei Punkt 1 gesagt hat, nutze diesen Tag: und nicht .

    Grüsse
    Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dancger“ ()

    Bezüglich dancgers antwort, ist das überhaupt das ergebnis was du erreichen willst?
    Deshalb beanworte mal bitte meine Frage zwei Posts darüber im Edit;//
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ok.. werde ich VB und nicht den # benützen... sorry wusste ich nicht.. und ich werde das nächste mal neues Thema öffnen... sorry bin noch neu hier...


    ich will dass die Bennenung der Buttons erfolgt über Inputbox.. und zwar in der reihenfolge der erste, dann der zweite, dann der dritte.....

    Wenn die Beschriftungen der Buttons leer sind und ich das erste mal was in die InputBox eingebe wird auch nur der erste Button beschriftet, so wie es sein soll...
    wenn der erste Button schon beschriftet ist und ich irgendwas ind die InputBox eingebe, wird auch nur der zweite beschriftet, der erste Button bleibt gleich wie vor und der dritte bleibt leer, so wie es sein soll
    wenn ich aber das dritte mal was in die Inputbox was eingebe und die ersten zwei Buttons beschriftet sind, dann wird zwar der dritte Button beschriftet, so wie es sein soll, aber dabei wird auch gelich der zwiete Button beschriftet, und dass soll nicht passieren...
    @Gather werde ich ausprobieren, Dancger hat hier ein Code mir geschrieben...
    @Dancger: werde deinen Code auprobieren

    MFG Neuro

    NeuroParadise schrieb:

    Ok.. werde ich VB und nicht den # benützen... sorry wusste ich nicht.. und ich werde das nächste mal neues Thema öffnen... sorry bin noch neu hier...

    Das waren lediglich nett gemeinte Hinweise ;)

    Der Code sollte eigentlich die Lösung bringen, da du in deinem Code einen Logikfehler hattest.

    Grüsse Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...