Binary Fortress
Binary Fortress Software
CheckCentral
ClipboardFusion
CloudShow
DisplayFusion
FileSeek
HashTools
LogFusion
Notepad Replacer
Online Base64 Decoder
Online Base64 Encoder
Online JSON Formatter
ShellSend
TrayStatus
VoiceBot
WallpaperFusion
Window Inspector
More Apps...
DisplayFusion
CheckCentral
CloudShow
ClipboardFusion
FileSeek
TrayStatus
VoiceBot
WallpaperFusion
Clipboard
Fusion
by Binary Fortress Software
Download
Download
Change Log
Download Beta
Beta Change Log
License (EULA)
Features
Features
HotKeys
Macros
Triggers
Clipboard Syncing
Clipboard Manager
Languages
Free vs Pro
Apps
More
Screenshots
Macros
Languages
Help
Help Guide
FAQ
Discussions
Contact Us
Find My License
Mailing Address
Advanced Settings
Purchase
Login / Register
WARNING: You currently have Javascript disabled!
This website will not function correctly without Javascript enabled.
Title
Message
OK
Confirm
Yes
No
Perform a Word Count on the Copied Text
Return to ClipboardFusion Macros
Description
Takes the copied clipboard text and perform a word count (among other things). A message box is displayed showing the statistics for your copied text.
Language
C#.net
Minimum Version
3.3+
Created By
Splat
Contributors
-
Date Created
Aug 19, 2014
Date Last Modified
Aug 19, 2014
Macro Code
Copy
Select All
using System; using System.Text.RegularExpressions; using System.Web; using System.Windows.Forms; public static class ClipboardFusionHelper { public static string ProcessText(string text) { // Name: Word Count // Description: Pops up a message box that shows some statistics about the text on the clipboard, such as word count, number of characters, number of lines, etc. // which message layout do we want to display? // feel free to add your own layouts below int intLayout = 1; // possible values are 1 or 2 // create an array of our objects // you can add more here as needed, but there may be limited space to display the results in the message box that pops objWordCount[] arrWordCount = new objWordCount[2]; arrWordCount[0] = new objWordCount("Text", text); arrWordCount[1] = new objWordCount("No HTML Tags", HttpUtility.HtmlDecode(Regex.Replace(text, @"<[\w\W]+?>", string.Empty))); // string used to store our word count message string strMessage = string.Empty; // different layouts can be added here // depending on your OS, you may have to tweak the layouts a little bit switch(intLayout) { default: // this is the default layout // create our word count message for(int i = 0; i < arrWordCount.Length; i++) { strMessage += (arrWordCount[i].title.ToUpper() + " ").PadRight(50, '\x2013') + "\r\n" + "Words " + (" " + arrWordCount[i].words.ToString()).PadLeft(12, '_') + "\r\n" + "Characters " + (" " + arrWordCount[i].chars.ToString()).PadLeft(12, '_') + "\r\n" + "Characters (no spaces) " + (" " + arrWordCount[i].charsNoSpaces.ToString()).PadLeft(12, '_') + "\r\n" + "Characters (no breaks) " + (" " + arrWordCount[i].charsNoBreaks.ToString()).PadLeft(12, '_') + "\r\n" + "Characters (no breaks or spaces) " + (" " + arrWordCount[i].charsNoSpacesBreaks.ToString()).PadLeft(12, '_') + "\r\n" + "Lines " + (" " + arrWordCount[i].lines.ToString()).PadLeft(12, '_') + "\r\n" + "Average characters per word \x2009" + (" " + (String.Format("{0:0.0}",((double)arrWordCount[i].charsNoSpacesBreaks / (double)arrWordCount[i].words)))).PadLeft(12, '_') + "\r\n" + "Average characters per line \x2009" + (" " + (String.Format("{0:0.0}",((double)arrWordCount[i].charsNoBreaks / (double)arrWordCount[i].lines)))).PadLeft(12, '_') + "\r\n" + "Average words per line \x2009" + (" " + (String.Format("{0:0.0}",((double)arrWordCount[i].words / (double)arrWordCount[i].lines)))).PadLeft(12, '_') + "\r\n" + "\r\n\r\n"; } break; case 2: // this layout has a problem if there are more then two word count objects, use the default layout instead // set the length of our titles to a maximum of 12 characters (we can't have them being too long in this layout) for(int i = 0; i < arrWordCount.Length; i++) { if(arrWordCount[i].title.Length > 12) arrWordCount[i].title = arrWordCount[i].title.Substring(0, 12); } // create our word count message strMessage = string.Empty; strMessage += "Clipboard Word Count"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + (arrWordCount[i].title).PadLeft(12, '\x2002'); strMessage += "\r\n" + new string('\x203E', 60) + "\r\nWords"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + (" " + arrWordCount[i].words.ToString()).PadLeft(12, '_'); strMessage += "\r\n\r\nCharacters"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + (" " + arrWordCount[i].chars.ToString()).PadLeft(12, '_'); strMessage += "\r\nCharacters (no spaces)"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + (" " + arrWordCount[i].charsNoSpaces.ToString()).PadLeft(12, '_'); strMessage += "\r\nCharacters (no breaks)"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + (" " + arrWordCount[i].charsNoBreaks.ToString()).PadLeft(12, '_'); strMessage += "\r\nCharacters (no spaces or breaks)"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + (" " + arrWordCount[i].charsNoSpacesBreaks.ToString()).PadLeft(12, '_'); strMessage += "\r\n\r\nLines"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + (" " + arrWordCount[i].lines.ToString()).PadLeft(12, '_'); strMessage += "\r\n\r\nAverage characters per word"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + "\x2009" + (" " + String.Format("{0:0.0}",((double)arrWordCount[i].charsNoSpacesBreaks / (double)arrWordCount[i].words))).PadLeft(12, '_'); strMessage += "\r\nAverage characters per line"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + "\x2009" + (" " + String.Format("{0:0.0}",((double)arrWordCount[i].charsNoBreaks / (double)arrWordCount[i].lines))).PadLeft(12, '_'); strMessage += "\r\nAverage words per line"; for(int i = 0; i < arrWordCount.Length; i++) strMessage += new string(' ', 5) + "\x2009" + (" " + String.Format("{0:0.0}",((double)arrWordCount[i].words /(double)arrWordCount[i].lines))).PadLeft(12, '_'); break; } // display our word count message box MessageBox.Show ( strMessage.Trim(), "Clipboard Word Count".PadRight(100, '\x2002'), MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign ); // we don't want to alter the original text on the clipboard, so return the same text as we received return text; } } public class objWordCount { public string title; public int pages; public int words; public int chars; public int charsNoSpaces; public int charsNoBreaks; public int charsNoSpacesBreaks; public int lines; public objWordCount(string strTitle, string strInput) { title = strTitle; pages = new Regex(@"\f", RegexOptions.Multiline).Matches(strInput).Count + 1; // based on form feed characters, not very common these days words = new Regex(@"\b\w+\b", RegexOptions.Multiline).Matches(strInput).Count; chars = strInput.Length; charsNoSpaces = Regex.Replace(strInput, @"[ \t\v]", string.Empty).Length; charsNoBreaks = Regex.Replace(strInput, @"[\f\r\n]", string.Empty).Length; charsNoSpacesBreaks = Regex.Replace(strInput, @"[\s]", string.Empty).Length; lines = new Regex(@"[\n\r]{1,2}", RegexOptions.Multiline).Matches(strInput).Count + 1; } }