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

 

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

χωρισμός σε λέξεις

Îåêßíçóå áðü ôï ìÝëïò zekia. Τελευταία δημοσίευση από το μέλος beastie στις 07-12-2006, 14:40. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  04-12-2006, 00:14 21592

    χωρισμός σε λέξεις

    Βρίσκομαι ακόμη σε εμβρυακό στάδιο ως προς τις γνώσεις μου γύρω απο το .net και την αποδοτικότερη χρήση του. Επειδή όμως είμαι της ιδέας πως η γνώση αποκτάται με την εμπειρία (και στη συγκεκεριμένη περιπτωση οι εμπειροι είστε εσείς) θα χρειαστώ αρκετες φορές τη βοήθειά σας.

    Λοιπόν... έχουμε ένα text box και ένα button. O χρήστης εισάγει μια φράση στο text box και πατά το button. Αρχικά θέλω η φράση να χωριστεί σε λέξεις, καθε μια απο τις οποίες θα τοποθετηθεί σε ένα κελί. Δεν μπορώ και έχω κολλήσει. Αυτός είναι ο κώδικας.

    protected void searchBut_Click(object sender, EventArgs e)

    {

    string Squery = searchText.Text;

    sepQuery(Squery);

    }

    protected void sepQuery(string s)

    {

    char[] a = s.ToCharArray(0,s.Length);

    char[] b=new char[a.Length];

    for (int i = 0; i < b.Length; i++)

    {

    for (int j = 0; j < a.Length; j++)

    {

    if (a[j].Equals(' '))

    {

    continue;

    }

    bIdea += a[j];

    i++;

    }

    }

    }

  •  04-12-2006, 01:40 21593 σε απάντηση της 21592

    Απ: χωρισμός σε λέξεις

    Δεν χρειάζεται όλη αυτή η φασαρία. Υπάρχει η split που σου χωρίζει ένα string και σου βάζει τα κομμάτια μέσα σε ένα array.

    string[] myWords = myString.Split(" ", System.StringSplitOptions.RemoveEmptyEntries);

    Το 2ο κομμάτι του λέει ότι δεν πρέπει να κρατήσει στο array κενά. Mπορείς να του δώσεις αυτό System.StringSplitOptions.None για να τα κρατήσει όλα.
    Simple Photography
  •  04-12-2006, 09:41 21598 σε απάντηση της 21592

    Απ: χωρισμός σε λέξεις

    την ειχα βρει τη split() αλλά δεν είχα καταλάβει σωστα τη λειτουργία της.

    Βεβαια μου εμφανίζει errors:

    Error 1 The best overloaded method match for 'string.Split(params char[])' has some invalid arguments
    Error 2 Argument '1': cannot convert from 'string' to 'char' 
    Error 3 Argument '2': cannot convert from 'System.StringSplitOptions' to 'char'

    παρόλο που ορίζεται πως τα myString και myWords ειναι όντως τύπου string. Η μέθοδος επιστρέφει char[]??

    Σ'ευχαριστώ πολύ

  •  04-12-2006, 10:08 21604 σε απάντηση της 21598

    Απ: χωρισμός σε λέξεις

    Ναι, η χρήση της split είναι λίγο περίεργη. Για κάποιο λόγο δεν δέχεται string αλλά char array. Οπότε μπορείς να την χρησιμοποιείσεις έτσι:

    char[] myS = " ".ToCharArray();

    myString.Split(mySeparator, .....)

    ή

    myString.Split(" ".ToCharArray(), .....)
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  04-12-2006, 10:27 21605 σε απάντηση της 21592

    Απ: χωρισμός σε λέξεις

    Ή αν θέλεις, υπάρχει και η λύση του
    myString.Split(new char[]{' '}, .....)


    Προσοχή στα μονά εισαγωγικά! Ένας χαρακτήρας (πχ κενό, αριθμός, γράμμα κλπ) μέσα σε διπλά εισαγωγικά, στην ουσία υποδηλώνει ένα string με μήκος ενός χαρακτήρα, ενώ ο ίδιος χαρακτήρας σε μονά εισαγωγικά υποδηλώνει μια μεταβλητή τύπου char.

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  04-12-2006, 14:50 21629 σε απάντηση της 21605

    Απ: χωρισμός σε λέξεις

    Kαι γω έλεγα γιατί ενώ μου έβγαζε το string το intellisense, με το που έβαζα το " " σαν παράμετρο, μου εξαφάνιζε το signature με το string...

    απάτη...

    :D
    Simple Photography
  •  04-12-2006, 23:33 21667 σε απάντηση της 21592

    Απ: χωρισμός σε λέξεις

    δηλ στην προκειμενη περίπτωση:

    protected void sepQuery(string s)

    {

    string[] myS;



    myS = s.Split(" ".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);

    }
  •  05-12-2006, 00:04 21673 σε απάντηση της 21667

    Απ: χωρισμός σε λέξεις

    Ποιος είναι ο στόχος σου τελικά. Για ποιο λόγο θέλεις να χωρίσεις το string;
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  05-12-2006, 00:23 21674 σε απάντηση της 21667

    Απ: χωρισμός σε λέξεις

     zekia wrote:
    δηλ στην προκειμενη περίπτωση:
    protected void sepQuery(string s)
    {
    string[] myS;
    myS = s.Split(" ".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
    }


    Ή απλά
    string[] words = s.Split(' ');
    καλώντας την Split(params char[] separators).

    Πάντως, αν αυτό που θέλεις να κάνεις είναι tokenization σε φυσική γλώσσα, το Split είναι πολύ απλή προσέγγιση.

    Νατάσα Μανουσοπούλου
  •  05-12-2006, 19:07 21700 σε απάντηση της 21592

    Απ: χωρισμός σε λέξεις

    ενταξει, δουλεύει ακριβώς έτσι όπως ήθελα.

    Ο στόχος είναι πολύ μακριά ακόμη και αφορά μηχανή αναζήτησης!!

    Σας ευχαριστώ πολύ :)
  •  07-12-2006, 14:40 21831 σε απάντηση της 21700

    Re: Απ: χωρισμός σε λέξεις

    Από την Vb6 που είχα χρησιμοποιήσει την Split είχα κάποια προβλήματα όταν ανάμεσα σε 2 λέξεις υπήρχαν 2 Spaces αντί για ένα... δλδ το "Hello World" μου έδινε 3 array elements.

    Για το λόγο αυτό είχα φτιάξει μία function όπου μου επέστρεφε μία συγκεκριμένη λέξη από το κείμενο... πχ την 4η...

    Function FindWord(ByVal in_Str As String, ByVal WhatWord As Integer) As String

    Dim SpacePos As Integer = 0

    Dim WordsFound As Short

    Dim PrevSpacePos As Integer = 0

    Dim Lastword As Boolean

    Lastword = False

    Do While WordsFound
    If Lastword Then

    return ""

    End If

    PrevSpacePos = SpacePos

    SpacePos = InStr(PrevSpacePos + 1, in_Str, " ")

    If SpacePos = 0 Then

    Lastword = True

    WordsFound = WordsFound + 1

    FindWord = Mid(in_Str, PrevSpacePos + 1)

    ElseIf SpacePos = PrevSpacePos + 1 Then

    FindWord = ""

    Else

    FindWord = Mid(in_Str, PrevSpacePos + 1, SpacePos - PrevSpacePos - 1)

    WordsFound = WordsFound + 1

    End If

    Loop

    Δεν έχω κοιτάξει αν η Split και στο .NET έχει την ίδια συμπεριφορά...

    Αν όχι... Απλά αγνόησε το Post ;-)
    -------------------------------
    Κ. Γιαγιάς

    Θα ήθελα να είμαι μέσα στην φωτογραφία και όχι εδώ!!!!

    http://beastie06.wordpress.com
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems