csv string in string (stringsystem)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von tomwetter.

    csv string in string (stringsystem)

    Hallo Forum,
    Ich habe einen String der so aussieht:

    Quellcode

    1. "productname","imageurl","producturl","price","currency","saleprice","storename"
    2. "Was ist Was. Das Mikroskop","http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg","","7.38","GBP","","N/A"

    Ich möchte aber nur die information --> Was ist was. Das Mikroskop
    als neuen string haben ?
    Danke im voraus :)
    Moin,

    das ist kein gültiger String. Meinst Du ein ​String-Array?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Einfach per Split

    VB.NET-Quellcode

    1. Dim Mystring As String = "1,2,3,4,5" & Environment.NewLine & "6,7,8,9,0"
    2. Dim Lines As String() = Mystring.Split(New String() {Environment.NewLine}, StringSplitOptions.None)
    3. Dim Produktname As String = Lines(1).Split(","c)(0)


    Zeile 2 Splittet den String beim Zeilenumbruch
    Zeile 3 Splittet beim "," und gibt den 1. Treffer der 2. Zeile aus.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ein ganzer String kann es nicht sein. Das sieht mir eher nach einem Array aus, da Kommas einzelne Strings abtrennen, ja.
    Dann halt per ​Split, wie Schamash sagte und dann per Index das richtige Item raussuchen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Trade schrieb:

    Ein ganzer String kann es nicht sein

    Warum nicht? der "MyString" aus meinem Beispiel sieht auch so aus. Ein String mit Zeilenumbruch.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Schau Dir sein Beispiel mal an, da steht vor jedem Komma ein String, bei Dir sind die Kommas mit im String.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade

    öh ... nö

    "productname","imageurl","producturl","price","currency","saleprice","storename" <---- Kein Komma
    "Was ist Was. Das Mikroskop","http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg","","7.38","GBP","","N/A"
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Das hat mit dem fehlenden Komma da ja nichts zu tun, können ja gut zwei String-Arrays sein. Die Schreibweise irritiert mich aber genauso, gehe nur von Arrays aus, da bei denen die Initialisierung mit bereits eingetragenen Werten auch so funktioniert.
    Ein normaler String ist es auf jeden Fall nicht. Wenn Du "productname","imageurl","producturl","price","currency","saleprice","storename" in einen String einsetzt oder von mir aus alles, wenn Du einen Zeilenumbruch miteinbeziehst, dann wird das nicht kompilieren, was man ja auch sieht. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade

    Du hast völlig recht! sry! Ich hab die " einfach ignroiert.

    In meinem Kopf sah sein "String" so aus:

    VB.NET-Quellcode

    1. Dim Mystring As String = "productname" & "," & "imageurl" & "," & "producturl" & "," & "price" & "," & "currency" & "," & "saleprice" & "," & "storename" & Environment.NewLine & "Was ist Was. Das Mikroskop" & "," & "http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg" & "," & "" & "," & "7.38" & "," & "GBP" & "," & "" & "," & "N/A"

    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ich glaube, sein Problem ist nicht der Zeilenumbruch.
    Er hat einzelne CSV-Records mit Separator=Komma und TextDelimiter=Anführungszeichen

    VB.NET-Quellcode

    1. Dim CsvRecord = """Was ist Was. Das Mikroskop"",""http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg"","""",""7.38"",""GBP"","""",""N/A""" 'bildet dasselbe ab, wie wenn die zweite Zeile eingelesen wird
    2. Dim ProductName = CsvRecord.Split({""","""}, StringSplitOptions.None)(0).Trim({""""c}) 'Extrahiert die erste Spalte


    Noch sauberer wäre eigentlich

    VB.NET-Quellcode

    1. Dim CsvRecord = """Was ist Was. Das Mikroskop"",""http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg"","""",""7.38"",""GBP"","""",""N/A"",""Text, mit Komma"""
    2. Dim Columns = CsvRecord.Trim({""""c}).Split({""","""}, StringSplitOptions.None)
    3. Dim ProductName = Columns(0)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    @Schamash Hey, kein Ding, kann passieren. ^^ Es würden halt sonst weitere " dazwischen fehlen, da in VB.NET zwei aufeinander folgen müssen (""), um ein Gänsefüßchen in einem String zu erstellen, das Äquivalent in C# wäre btw \".
    Edit: Sieht man in petaod's Beispiel. Sehe auch gerade, dass es sich um CSV handelt, gut, dann macht das Sinn, dann hatte nur der TE das Beispiel etwas anders vorgegeben und das hatte mich verwirrt.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    petaod schrieb:

    Ich glaube, sein Problem ist nicht der Zeilenumbruch.
    Er hat einzelne CSV-Records mit Separator=Komma und TextDelimiter=Anführungszeichen

    VB.NET-Quellcode

    1. Dim CsvRecord = """Was ist Was. Das Mikroskop"",""http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg"","""",""7.38"",""GBP"","""",""N/A""" 'bildet dasselbe ab, wie wenn die zweite Zeile eingelesen wird
    2. Dim ProductName = CsvRecord.Split({""","""}, StringSplitOptions.None)(0).Trim({""""c}) 'Extrahiert die erste Spalte


    Noch sauberer wäre eigentlich

    VB.NET-Quellcode

    1. Dim CsvRecord = """Was ist Was. Das Mikroskop"",""http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg"","""",""7.38"",""GBP"","""",""N/A"",""Text, mit Komma"""
    2. Dim Columns = CsvRecord.Trim({""""c}).Split({""","""}, StringSplitOptions.None)
    3. Dim ProductName = Columns(0)

    Ich kann den uhrsprungsstring aber leider nicht beeinflussen.
    @petaod @Trade
    Du brauchst ihn ja auch nicht beeinflussen.
    Schau dir mein zweites Beispiel an, dann siehst du, wie man das splitten kann.

    Die erste Zeile steht nur als Ersatz fürs Einlesen. Du wirst an der Stelle wahrscheinlich eine Dateioperation haben.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @petaod




    Ganz ehrlich von mir ich hab mir den string mit einem webclient runtergeladen und jetzt bin ich verwirt.
    ?(

    Spoiler anzeigen
    "productname","imageurl","producturl","price","currency","saleprice","storename"
    "Was ist Was. Das Mikroskop","http://ecx.images-amazon.com/images/I/517insvZa0L._SL160_.jpg","","7.38","GBP","","N/A"

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „tomwetter“ ()

    VB.NET-Quellcode

    1. Try
    2. Dim wc As New Net.WebClient
    3. Dim ganzer As String = wc.DownloadString("http://www.searchupzuasc.com/handclers/upcsearch.ashx?c=" & TextBox1.Text)
    4. Dim neu As String = ganzer.Replace("productname", "imageurl", "producturl", "price", "currency", "saleprice", "storename")
    5. Dim oductName = neu.Split({""","""}, StringSplitOptions.None)(0).Trim({""""c})
    6. MsgBox(oductName)
    7. Catch
    8. End Try
    1) Lass Try..Catch weg. Zumindest so lange du nicht weisst, was du catchen musst.
    2) Was soll das Replace?

    VB.NET-Quellcode

    1. Dim wc As New Net.WebClient
    2. Dim ganzer As String = wc.DownloadString("http://www.searchupzuasc.com/handclers/upcsearch.ashx?c=" & TextBox1.Text)
    3. Dim oductName = ganzer.Trim({""""c}).Split({""","""}, StringSplitOptions.None)(0)
    4. MsgBox(oductName)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --