Forces the string to word wrap so that each line doesn't exceed the maxLineLength. : String Util « Data Types « C# / C Sharp






Forces the string to word wrap so that each line doesn't exceed the maxLineLength.

    

//Microsoft Public License (Ms-PL)
//http://visualizer.codeplex.com/license

using System;
using System.Collections.Generic;

namespace Redwerb.BizArk.Core.StringExt
{
    /// <summary>
    /// Provides extension methods for strings.
    /// </summary>
    public static class StringExt
    {
        /// <summary>
        /// Forces the string to word wrap so that each line doesn't exceed the maxLineLength.
        /// </summary>
        /// <param name="str">The string to wrap.</param>
        /// <param name="maxLength">The maximum number of characters per line.</param>
        /// <returns></returns>
        public static string Wrap(this string str, int maxLength)
        {
            return Wrap(str, maxLength, "");
        }

        /// <summary>
        /// Forces the string to word wrap so that each line doesn't exceed the maxLineLength.
        /// </summary>
        /// <param name="str">The string to wrap.</param>
        /// <param name="maxLength">The maximum number of characters per line.</param>
        /// <param name="prefix">Adds this string to the beginning of each line.</param>
        /// <returns></returns>
        public static string Wrap(this string str, int maxLength, string prefix)
        {
            if (string.IsNullOrEmpty(str)) return "";
            if (maxLength <= 0) return prefix + str;

            var lines = new List<string>();

            // breaking the string into lines makes it easier to process.
            foreach (string line in str.Split("\n".ToCharArray()))
            {
                var remainingLine = line.Trim();
                do
                {
                    var newLine = GetLine(remainingLine, maxLength - prefix.Length);
                    lines.Add(newLine);
                    remainingLine = remainingLine.Substring(newLine.Length).Trim();
                    // Keep iterating as int as we've got words remaining 
                    // in the line.
                } while (remainingLine.Length > 0);
            }

            return string.Join(Environment.NewLine + prefix, lines.ToArray());
        }
        private static string GetLine(string str, int maxLength)
        {
            // The string is less than the max length so just return it.
            if (str.Length <= maxLength) return str;

            // Search backwords in the string for a whitespace char
            // starting with the char one after the maximum length
            // (if the next char is a whitespace, the last word fits).
            for (int i = maxLength; i >= 0; i--)
            {
                if (char.IsWhiteSpace(str[i]))
                    return str.Substring(0, i).TrimEnd();
            }

            // No whitespace chars, just break the word at the maxlength.
            return str.Substring(0, maxLength);
        }
    }
}

   
    
    
    
  








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.Determines if a string consists of all valid ASCII values.
17.Gets the right side of the string.
18.Truncates the string from left side
19.Shortcut for string.Format.
20.Gets the string up to the maximum number of characters.
21.Xml Encode String
22.returns the last word of the string, using separators space ,;!?:
23.checks if a string is null or empty or is made only of spaces
24.joins the strings with the speficied separator.
25.Truncates the string.
26.Truncate with text
27.If null returns empty string, else, returns original.
28.Returns the defaultval if the val string is null or empty.
29.Convert the word(s) in the sentence to sentence case.
30.Get the index of a spacer ( space" " or newline )
31.Remove Trailing Path Delimeter
32.Get delimited chars from a string.
33.String Utils
34.If necessary, adds zeros to the beginning of a value so that the total length matches the given precision
35.Add leading and trailing double quotes to the provided string if required.
36.Determines whether the string has white space.
37.Determines whether the string is all white space. Empty string will return false.
38.Ensures the target string ends with the specified string.
39.Convert String To Upper Ignore Null
40.Returns the size of substring that does not contain any trailing spaces
41.Skips any spaces at or after start and returns the index of first non-space character;
42.Provides a collection of convenience methods for processing and creating objects with String value components.
43.Get new line string
44.Convert string to sentence case
45.Cut string and display three dots
46.Remove Html
47.Truncates the specified string.
48.Ensures the carriage returns. See http://cr.yp.to/docs/smtplf.html and 822bis section 2.3.
49.Select Single Inner Text
50.Returns a string with non alphanumeric chars converted to the substitute character.
51.Use HttpUtility.HtmlEncode to encode the input string
52.Shortened the string.
53.Get sub string
54.Joins the key/value pairs into a string
55.Crops a given text