Helper class to split a long word into a single one. : String Util « Data Types « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Design Patterns
8.Development Class
9.Event
10.File Stream
11.Generics
12.GUI Windows Form
13.Language Basics
14.LINQ
15.Network
16.Office
17.Reflection
18.Regular Expressions
19.Security
20.Services Event
21.Thread
22.Web Services
23.Windows
24.Windows Presentation Foundation
25.XML
26.XML LINQ
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source
C# / C Sharp » Data Types » String UtilScreenshots 
Helper class to split a long word into a single one.
 


/*
 * Author: Kishore Reddy
 * Url: http://commonlibrarynet.codeplex.com/
 * Title: CommonLibrary.NET
 * Copyright: ? 2009 Kishore Reddy
 * License: LGPL License
 * LicenseUrl: http://commonlibrarynet.codeplex.com/license
 * Description: A C# based .NET 3.5 Open-Source collection of reusable components.
 * Usage: Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
using System;
using System.Collections.Generic;
using System.Text;



namespace GenericCode
{
    /// <summary>
    /// Helper class to split a long word into a single one.
    /// Alternative to possibly using Regular expression.
    /// </summary>
    public class TextSplitter
    {
        /// <summary>
        /// Determine how many times the word has to be split.
        /// </summary>
        /// <param name="wordLength"></param>
        /// <param name="maxCharsInWord"></param>
        /// <returns></returns>
        internal static int GetNumberOfTimesToSplit(int wordLength, int maxCharsInWord)
        {
            // Validate.
            if (wordLength <= maxCharsInWordreturn 0;

            // Now calc.
            int splitCount = wordLength / maxCharsInWord;
            int leftOver = wordLength % maxCharsInWord;

            if (leftOver > 0splitCount++;

            return splitCount;
        }
        /// <summary>
        /// Split the word, N number of times.
        /// </summary>
        /// <param name="word">The text to split.</param>
        /// <param name="charsPerWord">40 chars in each word.</param>
        /// <param name="spacer">" "</param>
        /// <returns></returns>
        internal static string SplitWord(string text, int charsPerWord, string spacer)
        {
            // Validate.
            if (string.IsNullOrEmpty(text)) { return text; }

            // Determine how many times we have to split.
            int splitCount = GetNumberOfTimesToSplit(text.Length, charsPerWord);

            // Validate.
            if (splitCount == 0return text;

            // Use buffer instead of string concatenation.
            StringBuilder buffer = new StringBuilder();
            int currentPosition = 0;

            // Split N number of times.
            for (int count = 1; count <= splitCount; count++)
            {
                string word = (count < splitCount? text.Substring(currentPosition, charsPerWord: text.Substring(currentPosition);

                buffer.Append(word);

                // Condition to prevent adding spacer at the end.
                // This is to leave the supplied text the same except for splitting ofcourse.
                if (count < splitCountbuffer.Append(spacer);

                // Move to next split start position.
                currentPosition += charsPerWord;
            }

            return buffer.ToString();
        }
        /// <summary>
        /// Check the single line of text for long word that exceeds the
        /// maximum allowed.
        /// If found, splits the word.
        /// </summary>
        /// <param name="text"></param>
        /// <param name="maxCharsInWord"></param>
        /// <returns></returns>
        public static string CheckAndSplitText(string text, int maxCharsInWord)
        {
            // Validate.
            if (string.IsNullOrEmpty(text)) return text;

            bool isSpacerNewLine = false;
            int currentPosition = 0;
            int ndxSpace = GetIndexOfSpacer(text, currentPosition, ref isSpacerNewLine);

            // Case 1: Single long word.
            if (ndxSpace < && text.Length > maxCharsInWordreturn SplitWord(text, maxCharsInWord, " ");

            StringBuilder buffer = new StringBuilder();

            // Now go through all the text and check word and split.
            while ((currentPosition < text.Length && ndxSpace > 0))
            {
                //Lenght of word 
                int wordLength = ndxSpace - (currentPosition);
                string currentWord = text.Substring(currentPosition, wordLength);
                string spacer = isSpacerNewLine ? Environment.NewLine : " ";

                if (wordLength > maxCharsInWord)
                {
                    string splitWord = SplitWord(currentWord, maxCharsInWord, " ");
                    buffer.Append(splitWord + spacer);
                }
                else
                {
                    buffer.Append(currentWord + spacer);
                }

                currentPosition = (isSpacerNewLine? ndxSpace + : ndxSpace + 1;
                ndxSpace = GetIndexOfSpacer(text, (currentPosition), ref isSpacerNewLine);
            }

            // Final check.. no space found but check complete length now.
            if (currentPosition < text.Length && ndxSpace < 0)
            {
                //Lenght of word 
                int wordLength = (text.Length- currentPosition;
                string currentWord = text.Substring(currentPosition, wordLength);
                string spacer = isSpacerNewLine ? Environment.NewLine : " ";

                if (wordLength > maxCharsInWord)
                {
                    string splitWord = SplitWord(currentWord, maxCharsInWord, " ");
                    buffer.Append(splitWord);
                }
                else
                {
                    buffer.Append(currentWord);
                }
            }
            return buffer.ToString();
        }
        /// <summary>
        /// Get the index of a spacer ( space" " or newline )
        /// </summary>
        /// <param name="txt"></param>
        /// <param name="currentPosition"></param>
        /// <returns></returns>
        public static int GetIndexOfSpacer(string txt, int currentPosition, ref bool isNewLine)
        {
            // Take the first spacer that you find. it could be eithr
            // space or newline, if space is before the newline take space
            // otherwise newline.            
            int ndxSpace = txt.IndexOf(" ", currentPosition);
            int ndxNewLine = txt.IndexOf(Environment.NewLine, currentPosition);
            bool hasSpace = ndxSpace > -1;
            bool hasNewLine = ndxNewLine > -1;
            isNewLine = false;

            // Found both space and newline.
            if (hasSpace && hasNewLine)
            {
                if (ndxSpace < ndxNewLine) { return ndxSpace; }
                isNewLine = true;
                return ndxNewLine;
            }

            // Found space only.
            if (hasSpace && !hasNewLine) { return ndxSpace; }

            // Found newline only.
            if (!hasSpace && hasNewLine) { isNewLine = truereturn ndxNewLine; }

            // no space or newline.
            return -1;
        }
    }
}

   
  
Related examples in the same category
1.Generate ToString for given object
2.Remove all Html tag in a string
3.If given string Not Null Or Empty
4.Does string Contain White Space
5.Is given string white space
6.Ensure given string to end with another string
7.Does a string have only one word
8.Is the input string null or empty
9.Get Right Side Of String
10.Count Lines In String
11.Reverse a string
12.Get used chars
13.Calculate the max count of continuous characters
14.Count number of chars in a string
15.Count lines in a string with IndexOf
16.Forces the string to word wrap so that each line doesn't exceed the maxLineLength.
17.Splits the string into lines.
18.Splits the string into words (all white space is removed).
19.Determines if a string consists of all valid ASCII values.
20.Gets the right side of the string.
21.Truncates the string from left side
22.Shortcut for string.Format.
23.Gets the string up to the maximum number of characters.
24.Split Quoted String
25.Xml Encode String
26.Generates a hashcode for the string array
27.returns the last word of the string, using separators space ,;!?:
28.checks if a string is null or empty or is made only of spaces
29.removes the specified strings in the string array from the input string
30.joins the strings with the speficied separator.
31.Truncates the string.
32.Truncate with text
33.If null returns empty string, else, returns original.
34.Returns the defaultval if the val string is null or empty.
35.Convert the word(s) in the sentence to sentence case.
36.Get the index of a spacer ( space" " or newline )
37.Count how many times a word appears in an array of words.
38.Find all unique words in an array of words.
39.Gets an array of sentences from a string.
40.Splits the string into an array, using the separator.
41.Array To New Line Separated String
42.New Line Separated String To Array
43.returns the elements of the array as a string, delimited with the default delimitor
44.Remove Trailing Path Delimeter
45.Get delimited chars from a string.
46.Ensures that a given array can hold up to minCapacity elements.
47.String Utils
48.If necessary, adds zeros to the beginning of a value so that the total length matches the given precision
49.Add leading and trailing double quotes to the provided string if required.
50.Determines whether the string has white space.
51.Determines whether the string is all white space. Empty string will return false.
52.Ensures the target string ends with the specified string.
53.Splits string name into a readable string based on camel casing.
54.Convert String To Upper Ignore Null
55.Returns the size of substring that does not contain any trailing spaces
56.Skips any spaces at or after start and returns the index of first non-space character;
57.Provides a collection of convenience methods for processing and creating objects with String value components.
58.Get new line string
59.Convert string to sentence case
60.Cut string and display three dots
61.Replaces the new lines in a string with the given replacement characters.
62.Remove Html
63.Truncates the specified string.
64.Ensures the carriage returns. See http://cr.yp.to/docs/smtplf.html and 822bis section 2.3.
65.Select Single Inner Text
66.Returns a string with non alphanumeric chars converted to the substitute character.
67.Use HttpUtility.HtmlEncode to encode the input string
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.