03. december 2002 - 21:13Der er
11 kommentarer og 1 løsning
tælle ord og sætninger i tekst!
Tjae nu ville jeg gerne tælle antallet af ord og sætninger i en given tekst og derudover kunne jeg tænke mig at tælle antallet af ord på over 6 bogstaver.
Kan nogen hjælpe mig lidt i gang her?
Jeg har forsøgt mig med følgende script, men jeg synes det bliver lidt molboagtigt - og desuden giver det ikke det præcise antal :(
w=new Array(); antalord=1; antalsætninger=1; antal6ord=0; for (i=0; i<tekst2.length; i++) { if (tekst2.charAt(i)==" " or tekst2.charAt(i)=="\r" or tekst2.charAt(i)=="\n" or tekst2.charAt(i)=="(" or tekst2.charAt(i)==")") antalord++; if (tekst2.charAt(i)=="," or tekst2.charAt(i)=="." or tekst2.charAt(i)=="!" or tekst2.charAt(i)=="?") antalsætninger++; } w=tekst2.split(" "); for (i=0; i<w.length; i++) { if (w[i].length>6) antal6ord++; }
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Har ændret lidt på mit skript siden - og det virker bedre, men er stadig langt fra optimalt:
on (release) { //lix w=new Array(); ww=new Array(); lixX=1; lixY=0; lixZ=0; for (i=0; i<tekst.length; i++) { if (tekst.charAt(i)==" " or tekst.charAt(i)=="\r" or tekst.charAt(i)=="\n" or tekst.charAt(i)=="(" or tekst.charAt(i)==")") lixX++; if (tekst.charAt(i)=="," or tekst.charAt(i)=="." or tekst.charAt(i)=="!" or tekst.charAt(i)=="?") lixY++; }
w=tekst.split(" "); for (i=0; i<w.length; i++) { ww=w[i].split("."); for (j=0; j<ww.length; j++) { if (ww[j].length>6) lixZ++; } } if (lixY==0) lixY=1; lix=Math.round((lixX/lixY)+((lixZ*100)/lixX));
Altså: function count (text) { var sentence_delimiter = [". ", ", ", "! ", "? "]; var word_delimiter = [" "]; var sentences = text; var delimit = "|"; for (i in sentence_delimiter) { sentences = sentences.split(sentence_delimiter[i]).join(delimit); } sentences = sentences.split(delimit); var count_sentences = sentences.length; var words = sentences.join(delimit); for (i in word_delimiter) { words = words.split(word_delimiter[i]).join(delimit); } words = words.split(delimit); var count_words = words.length; var count_long_words = 0; var long_words = 6; for (i in words) { if (words[i].length>=long_words) { count_long_words++; } } return [count_sentences, count_words, count_long_words]; } trace (count("her er noget tekst. Og noget laaaangt."));
Jeg har dig mistænkt for at det var en du havde på lager :)
Det virker fint - undtagen det med de lange ord! Hvis jeg skriver 'lange.', så tæller punktummet med som bogstav i ordet og ordet 'lange.' tælles altså med som langt ord pga af punktummet.
for (i in words) { for (j in sentence_delimiter) { if (words[i].charAt(words[i].length-1)==sentence_delimiter[j].charAt(0)) words.splice(i, 1, words[i].slice(0, (words[i].length-1))); } if (words[i].length>long_words) { count_long_words++; } }
(jeg havde ikke nogen på lager... Skrev den kun til dig :o)
function count (text) { var sentence_delimiter = [".", ",", "!", "?"]; var word_delimiter = [" "]; var sentences = text; var delimit = "|"; for (var i in sentence_delimiter) { sentences = sentences.split(sentence_delimiter[i]).join(delimit); } for (var i in sentence_delimiter) { if (sentences.charAt(sentences.length-1) == sentence_delimiter[i].charAt(0)) { sentences = sentences.substring(-2); break; } } sentences = sentences.split(delimit); var count_sentences = sentences.length; var words = sentences.join(""); for (var i in word_delimiter) { words = words.split(word_delimiter[i]).join(delimit); } words = words.split(delimit); var count_words = words.length; var count_long_words = 0; var long_words = 6; for (var i in words) { if (words[i].length>=long_words) { count_long_words++; } } return [count_sentences, count_words, count_long_words]; } trace (count("her er noget tekst. Og nogeet langt."));
Så skulle den være der... Det er jo kun til allerallersidst, at der kan være en ensom sentence_delimiter... Og den skal altid klippes væk..
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.