using System; using System.Text; using System.Collections.Generic; public static class ClipboardFusionHelper { public static string ProcessText(string text) { //make sure all of the line breaks are the same type text = text.Replace(Environment.NewLine, "\n"); text = text.Replace("\r", "\n"); text = text.Replace("\0", "\n"); //this will let us quickly build the string to return StringBuilder builder = new StringBuilder(); //split the text up into its separate lines foreach(string line in text.Split(new char[]{'\n'}, StringSplitOptions.RemoveEmptyEntries)) { //this is probably redundant since we are removing empty entries //if the line variable is null or empty, continue to the next line if(string.IsNullOrEmpty(line)) continue; //if the line is blank, ignore it if(IsLineOnlyWhiteSpace(line)) continue; //add the line to the StringBuilder builder.Append(line).Append(" "); } //paste the StringBuilder BFS.Clipboard.PasteText(builder.ToString()); //since we already set the clipboard with the PasteText function, there's no need to set it again return null; } //this is a set of blank characters private static readonly Dictionary WhiteSpaceChars = new Dictionary { {' ', 0}, {'\x0085', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {' ', 0}, {'\x200B', 0}, {' ', 0}, {'\xFEFF', 0}, {'\v', 0}, {'\f', 0}, {'\x2028', 0}, {'\x2029', 0}, }; //this function returns true if a line is composed of only whitespace or blank characters private static bool IsLineOnlyWhiteSpace(string line) { foreach(char c in line) { if(!WhiteSpaceChars.ContainsKey(c)) return false; } return true; } }