String utility: word count, replace and capitalize
/* JavaScript Application Cookbook By Jerry Bradenbaugh Publisher: O'Reilly Series: Cookbooks ISBN: 1-56592-577-7 */ <HTML> <HEAD> <TITLE>strings.js Example</TITLE> <SCRIPT LANUAGE="JavaScript1.1"> // strings.js function wordCount(str) { var wordArray = new Array(); str = prepStr(str); var tempArray = str.split(' ').sort(); var count = 1; // Iterate through all the words for (var i = 0; i < tempArray.length; i++) { // If an array element with the same name as // the current word exists, increment its value by 1 if (wordArray[tempArray[i]]) { wordArray[tempArray[i]]++; } // Otherwise, assign the array element to the /// name of the word, and give it a value of 1 else { wordArray[tempArray[i]] = 1; } } var arrStr = ''; // Create table rows that display the word and the frequency for (word in wordArray) { if (word != "") { arrStr += '<TR><TD>' + word + '</TD><TD>' + wordArray[word] + '</TD></TR>'; count++; } } return '<TABLE BORDER=0 CELLPADDING=10><TR><TD WIDTH=300 VALIGN=TOP ROWSPAN=' + count + '><B>Original Formatted Text</B><BR><I>' + str + '</I><TD><B>Word</B><TD><B>Freqency</B></TR>' + arrStr + '</TABLE>'; } // Define a function to format strings for easier manipulation function prepStr(str) { str = str.toLowerCase(); str = str.replace(/['"-]/g, ""); str = str.replace(/\W/g, " "); str = str.replace(/\s+/g, " "); return str; } function camelCaps(str, theCase) { var tempArray = str.split(' '); // Make the first character of each word upper- or lowercase // depending on the value of theCase for (var i = 0; i < tempArray.length; i++) { if (theCase) { tempArray[i] = tempArray[i].charAt(0).toUpperCase() + tempArray[i].substring(1); } else { tempArray[i] = tempArray[i].charAt(0).toLowerCase() + tempArray[i].substring(1); } } return tempArray.join(' '); } var order = true; function reorder(str) { str = prepStr(str); str = str.replace(/\d/g, ""); order = !order; // Use the sort() method for traditional sorts // Use the reverse() method in conjunction for reverse sorts() if(!order) { str = str.split(' ').sort().join(' '); } else { str = str.split(' ').sort().reverse().join(' '); } return str.replace(/^\s+/, ""); } </SCRIPT> <SCRIPT LANGUAGE="JavaScript1.1"> <!-- function doCount(txt) { words = wordCount(txt); self.location.href = "javascript: '<HTML>' + words + '</HTML>'"; } //--> </SCRIPT> </HEAD> <BODY BGCOLOR=WHITE> <FORM> Enter some words in the TEXTAREA below. Then choose <B>Count</B> for a word count: <BR> <TEXTAREA ROWS=10 COLS=25 WRAP=PHYSICAL> </TEXTAREA><BR> <INPUT TYPE=BUTTON VALUE="Count" onClick="doCount(this.form.elements[0].value);"> <INPUT TYPE=RESET> </FORM> <BR><BR> <FORM> Enter some words in the TEXTAREA below. Then choose <B>Upper</B> or <B>Lower</B> to change the case: <BR> <TEXTAREA ROWS=10 COLS=25 WRAP=PHYSICAL> </TEXTAREA><BR> <INPUT TYPE=BUTTON VALUE="Upper" onClick="this.form.elements[0].value=camelCaps(this.form.elements[0].value, true);"> <INPUT TYPE=BUTTON VALUE="Lower" onClick="this.form.elements[0].value=camelCaps(this.form.elements[0].value, false);"> <INPUT TYPE=RESET> </FORM> <BR><BR> <FORM> Enter some words in the TEXTAREA below. Then choose <B>Sort</B> to sort the text: <BR> <TEXTAREA ROWS=10 COLS=25 WRAP=PHYSICAL> </TEXTAREA><BR> <INPUT TYPE=BUTTON VALUE=" Sort " onClick="this.form.elements[0].value=reorder(this.form.elements[0].value);"> <INPUT TYPE=RESET> </FORM> </BODY> </HTML>