2017-06-09 5 views
1

Ich arbeite an meiner College-Hausaufgaben. Ich habe große Schwierigkeiten damit und stecke fest. Meine Klassenkameraden helfen mir nicht und der Lehrer hat nicht geantwortet. Ich hoffe, dass ich hier Hilfe/Verständnis bekomme. Die aktuelle Aufgabe, an der ich gerade arbeite und die heute fällig ist, lautet:Erstellen Sie einen Textbereich und analysieren Sie die Schaltfläche

Erstellen Sie eine Seite mit einem Textfeld und einer Schaltfläche "Analysieren". Der Ergebnisbereich zeigt die Häufigkeit von Wörtern mit x Zeichen an. Zum Beispiel enthält der Text "eins zwei drei" zwei 3-stellige Wörter und ein 5-stelliges Wort. Eine Verbesserung des ursprünglichen Entwurfs wäre es, alle irrelevanten Zeichen zu entfernen, die die Zählung verfälschen könnten.

Ich beginne es gerade jetzt, also werde ich den Code hier hinzufügen, während ich aktualisiere. Ich weiß, ich werde kein Problem mit dem HTML-Teil haben, das JavaScript wird mein Problem sein. Von dem, was ich bekomme, muss ich eine Funktion haben, die die Wörter und die Zeichen in jedem Wort zählt. Aber es müssen Leerzeichen und Zeichen wie:,. '; /. Ich habe diesen Code nicht schon einmal durchgelesen, daher ist jede Eingabe hilfreich, wie ich das Javascript gestalten sollte. Außerdem möchte er, dass ich aufzählen soll, wie viele Wörter die gleichen Buchstaben haben. Lies ich das richtig?

Mein Code so weit:

<!DOCTYPE html> 
<html> 

<body> 

    <textarea id="txtarea"> 
    </textarea> 
    <input type="button" id="analyze" value="Analyze" onclick="myFunction()" /> 

    <p id="demo"></p> 
    <p id="wcnt"></p> 

    <script> 
     function myFunction() { 
      var str = document.getElementById("txtarea").value; 
      var res = str.split(/[\s\/\.;,\-0-9]/); 
      var n = str.length; 
      document.getElementById("demo").innerHTML = "There are " + n + " characters in the text area."; 
      for (var i = 0; i < res.length; i++) { 

       s = document.getElementById("txtarea").value; 
       s = s.replace(/(^\s*)|(\s*$)/gi, ""); 
       s = s.replace(/[ ]{2,}/gi, " "); 
       s = s.replace(/\n /, "\n"); 
       document.getElementById("wcnt").innerHTML = "There are " + s.split(' ').length + " words in the text area."; 
      } 

     } 
    </script> 

</body> 

</html> 

Jetzt muss ich herausfinden, wie es die Zeichen jedes Wortes dann ausgegeben, wie viele Wörter haben x Anzahl der Zeichen zählen zu lassen. Wie 5 Wörter haben 4 Zeichen und so weiter. Irgendwelche Vorschläge?

+2

Wenn Sie die Frage aufteilen und verschiedene Teile googlen, werden Sie in der Lage sein, die Antwort zu finden ... es wäre lehrreicher für Sie, es selbst zu lernen und zusammen zu stellen. Das ganze Internet ist eine Enzyklopädie. Wir helfen Ihnen gerne weiter, wenn Sie Probleme mit Ihrem Code haben, aber bitte versuchen Sie es zuerst. –

+0

Hallo Paige, ich schreibe, aber dachte, ich würde auch hier fragen, da ich weiß, dass ich stecken bleiben werde. Ich habe vor, meinen Code hier einzufügen, während ich ihn eintippe und mir Ratschläge gebe, damit andere eine Idee im Kopf haben, also weiß ich bereits, was ich versuche zu tun, wenn ich Code poste. Vertrau mir. Ich erwarte nicht, dass irgendjemand meine Hausaufgaben für mich erledigt, nur vielleicht, wo ich ein Problem habe, wenn ich es gepostet habe. =) –

Antwort

1

Sehr wahrscheinlich müssen Sie JavaScript's split Funktion mit Regex verwenden, um alle Zeichen zu definieren, die Sie nicht einschließen möchten. Führen Sie dann eine Schleife durch das resultierende Array und zählen Sie die Zeichen in jedem Wort.

var words = document.getElementById("words"); 
 
var analyze = document.getElementById("analyze"); 
 

 
analyze.addEventListener("click", function(e) { 
 
    var str = words.value; 
 
    var res = str.split(/[\s\/\.;,\-0-9]/); 
 
    for(var i = 0; i < res.length; i++) { 
 
     alert(res[i].length); 
 
    } 
 
});
<textarea id="words">This is a test of this word counter thing.</textarea> 
 
<br/> 
 
<button id="analyze"> 
 
    Analyze 
 
</button>

+0

Ok, also was ich beim Lesen davon bekomme ist, dass der str.split alles entfernt, was kein Wort ist, also zählt es einfach das Wort. Der nächste Teil durchläuft jedes Wort und zählt die Zeichen im Wort? –

0

Ihr Lehrer Sie will nicht aufzählen, wie können Worte die gleichen Zeichen, sondern die gleiche Anzahl von Zeichen haben. Der Basisalgorithmus:

  1. Weisen Sie den Wert des Textbereichs einer Variablen zu.
  2. Konvertieren Sie diesen Zeichenfolgenwert in ein Array. In Javascript kann dies mit der String-Split-Methode unter Verwendung eines regulären Ausdrucks erreicht werden, der eine Zeichenklasse enthält.
  3. Iterieren Sie über dieses Array und untersuchen Sie jedes Element auf seine Länge. Erhöhen Sie für jedes Element die Eigenschaft eines Zählobjekts, dessen Eigenschaftsname die Länge des Elements ist.
  4. Iterieren Sie über die Eigenschaftenliste des Zählobjekts. Gibt den Namen und den Wert jeder Eigenschaft in den Ergebnisbereich aus.
1

var textarea = document.getElementById("textarea"), 
 
    result = {}; // object Literal to hold "word":NumberOfOccurrences 
 

 
function analyzeFrequency() { 
 

 
    // Match/extract words (accounting for apostrophes) 
 
    var words = textarea.value.match(/[\w']+/g); // Array of words 
 
    
 
    // Loop words Array 
 
    for(var i=0; i<words.length; i++) { 
 
    var word = words[i]; 
 
    // Increment if exists OR assign value of 1 
 
    result[word] = ++result[word] || 1; 
 
    } 
 
    console.log(result); 
 
} 
 

 

 
analyzeFrequency(); // TODO: Do this on some button click
<textarea id="textarea"> 
 
    I am working on my college-homework. 
 
    Homework I am having a lot of difficulty with it and getting stuck. 
 
    My class mates are not helping me and the instructor hasn't responded. 
 
    I am hoping I might get some help/understanding here. 
 
</textarea>

Beachten Sie, wie Homework und homework (klein geschrieben) werden als zwei verschiedene Wörter registriert, ich es Ihnen überlassen werde das beheben - wenn nötig und Umsetzung der analyzeFrequency() Trigger auf einige Klicken Sie auf die Schaltfläche.

Verwandte Themen