Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Split σε String

Îåêßíçóå áðü ôï ìÝëïò SotirisPap. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 04-04-2008, 23:37. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-11-2007, 23:50 37506

    Split σε String

    Dim a as Char=" "
    Dim split As String() = gr.Split(New Char() {a})

    Εάν το διάστημα μεταξύ των String είναι μεγαλύτερο του 1 , ποιό πρέπει να είναι το a

    Ευχαριστώ

  •  19-11-2007, 00:09 37507 σε απάντηση της 37506

    Απ: Split σε String

    Υποθέτω ότι εννοείς πως θα αποφύγεις τη δημιουργία κενών strings αν επαναλαμβάνονται κενά strings?

    Κοίτα στο Help την παραλλαγή της Split η οποία παίρνει και παράμετρο StringSplitOptions. Αν θέσεις την τιμή RemoveEmptyEntries θα πετύχεις αυτό που θες.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-11-2007, 01:18 37508 σε απάντηση της 37507

    Απ: Split σε String

    Dim s1 As String = "ONE   TWO   THREE"
    To String είναι έτσι δηλ. μεσολαβούν πάντα 3 κενά

    Ποιό πρέπει να είναι
    Dim stringSeparators() As String = {"  "}

    γιά να πέρνω τα ξεχωριστά String και όχι αυτά που έχουν μόνο ένα κενό μεταξύ τους
    δηλ αν  ONE TWO τότε να το βλέπει σαν ένα String
  •  31-03-2008, 18:23 41222 σε απάντηση της 37508

    Απ: Split σε String

    Ένας πιο αποδοτικός τρόπος είναι να χρησιμοποιήσεις Regular Expressions. Για περισσότερες πληροφορίες και παραδείγματα http://www.regular-expressions.info/

  •  01-04-2008, 10:53 41231 σε απάντηση της 41222

    Απ: Split σε String

    εμ, ξέρει μήπως κανείς πως υλοποιεί το .Net τα regexp με αποτέλεσμα να είναι τόσο γρήγορα?
  •  01-04-2008, 11:32 41236 σε απάντηση της 41231

    Απ: Split σε String

    Θα μπορούσες απλά πρίν κάνεις Split να κάνεις replace τα 2 κενά με ένα κενό ως εξής :

    gr.Replace("  "," ").Split(a.TocharArray())

     


    Σταύρος Βαλσάμης
    Προγραμματιστής
  •  03-04-2008, 17:22 41292 σε απάντηση της 37506

    Απ: Split σε String


    Μπορείς να δεις το κώδικα που παραθέτω για να πάρεις μια ιδέα το πώς μπορεί να γίνει με RegEx.  Το separator string είναι 3 κενά που όπως είπες θα είναι το standard  που θα χωρίζει τις τιμές μεταξύ τους

    Αν έχεις απορίες μπορείς να μου στείλεις PM




    Imports System.Text.RegularExpressions

    Module Module1
        Sub Main()

            Dim test As String
            Dim seperator As String
            Dim valuesarray As Array
            Dim value As String
            seperator = "   "
            test = "one space   two  spaces   three   spaces"

            valuesarray = Regex.Split(test, seperator)

            For Each value In valuesarray
                Console.WriteLine(value)

            Next
        End Sub

    End Module



  •  03-04-2008, 21:47 41294 σε απάντηση της 41292

    Απ: Split σε String

    Μήπως γινόμαστε υπερβολικοί? Η String.Split κάνει άνετα τη δουλειά, ενώ τα Regular Expressions είναι αρκετά στρυφνά. Όπως λέει και ο Roy Osherove, ο δημιουργός του Regulator και του Regulazy, "You have a problem and you want to solve it with regular expressions. Now you have TWO problems". Ε, κάτι θα ξέρει Stick out tongue

    Όσον αφορά το Split, μία από τις μορφές του δέχεται ένα string array. O κώδικας είναι απλούστατος:

    string[] items = mystring.Split(new string[]{" "},StringSplitOptions.None);


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  04-04-2008, 19:51 41344 σε απάντηση της 41294

    Απ: Split σε String

    Oi REGEX οντος θα είναι  overkill αν μιλάμε για λίγες πράξεις , αν όμως ι συγκεκριμένη ρουτίνα χρησιμοποιείτε για να κάνει process μεγάλα log files τότε ένα REGEX πιθανόν να είναι πιο αποδοτικό.

     

    Το αρχικό post είναι γραμμένο σε VB οπότε ένα απλο implementation τις Split einai παρακάτω:

     



    Imports System.Text.RegularExpressions

    Module Module1
        Sub Main()

            Dim test As String
            Dim seperator As String
            Dim valuesarray As Array
            Dim value As String
            seperator = "   "
            test = "one space   two  spaces   three   spaces"

            valuesarray = Split(test, "   ")


            For Each value In valuesarray
                Console.WriteLine(value)

            Next
        End Sub

    End Module
  •  04-04-2008, 21:08 41345 σε απάντηση της 41344

    Απ: Split σε String

    Lutonian στον παραπάνω κώδικα αν κατάλαβα καλά χρησιμοποιείς την Microsoft.VisualBasic.Strings.Split και όχι την System.String.Split.

    Το αναφέρω σαν σημείωση, καθώς η πρώτη βρίσκεται στο .net για λόγους συμβατότητας με την vb6 και διαφέρει ελαφρώς από την δεύτερη. 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  04-04-2008, 21:20 41347 σε απάντηση της 41345

    Απ: Split σε String

    Συνημμένα: Program.zip

    Έκανα λίγο benchmarking (1.000.000 iterations) και έχουμε:

    1. System.String.Split - 1,8 sec
    2. VisualBasic.String.Split - 6,9 sec
    3. RegEx.Split - 14,8 sec

    Επισυνάπτω τον κώδικα.

    Για να τρέξει ο κώδικας πρέπει να προσθέσετε στο C# console project που θα δημιουργήσετε ένα reference στην Microsoft.VisualBasic!!! Τι θράσος!!! Tongue Tied


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  04-04-2008, 23:37 41352 σε απάντηση της 41347

    Απ: Split σε String

    Ωραίος ο Δημήτρης! Πράγματι, η Split() δεν είναι αντίστοιχη της Sting.Split. Επίσης, η Split() επιστρέφει String() και όχι Array, αν και αυτό δεν επηρεάζει την ταχύτητα. Ο αντίστοιχος κώδικας για το String.Split σε VB πάντως είναι:

    Dim test As String = "one space two spaces three spaces"
    Dim values() As String = test.Split(New String() {" "}, StringSplitOptions.None)
    For Each value As String In values
       Console.WriteLine(value)
    Next


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems