Escape and unescape string : String Format « Data Types « C# / C Sharp






Escape and unescape string

    

namespace Deppton.Model
{
    using System;
    using System.Text;
    using System.Text.RegularExpressions;

    /// <summary>
    /// Utility functions class.
    /// </summary>
    public static class Utilities
    {
        /// <summary>
        /// Quote in comma separated value string lists.
        /// </summary>
        private const string Quote = "\"";

        /// <summary>
        /// Escaped quote in comma separated value string lists.
        /// </summary>
        private const string EscapedQuote = "\"\"";

        /// <summary>
        /// Characters required to be quoted for comma separated value string lists.
        /// </summary>
        private static char[] charactersRequiredToBeQuoted = { ',', '\"' };

        /// <summary>
        /// Regular expression to split comma separated value string lists.
        /// </summary>
        private static Regex splitterRegex = new Regex(@",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))");

        /// <summary>
        /// Escapes the string list into a comma separated value string.
        /// </summary>
        /// <param name="values">The values to escape.</param>
        /// <returns>The escaped comma separated value string.</returns>
        public static string EscapeList(params string[] values)
        {
            StringBuilder builder = new StringBuilder();

            for (var index = 0; index < values.Length; index++)
            {
                var value = values[index];

                builder.Append('\"' + Escape(value) + '\"');

                if (index < values.Length - 1)
                {
                    builder.Append(',');
                }
            }

            return builder.ToString();
        }

        /// <summary>
        /// Unescapes a comma separated value string list.
        /// </summary>
        /// <param name="value">The comma separated value string.</param>
        /// <returns>The unescaped values.</returns>
        public static string[] UnescapeList(string value)
        {
            string[] values = splitterRegex.Split(value);

            for (int i = 0; i < values.Length; i++)
            {
                values[i] = Unescape(values[i]);
            }

            return values;
        }

        /// <summary>
        /// Determines whether a location is within a expected radius.
        /// </summary>
        /// <param name="latitude">The latitude.</param>
        /// <param name="longitude">The longitude.</param>
        /// <param name="expectedLatitude">The expected latitude.</param>
        /// <param name="expectedLongitude">The expected longitude.</param>
        /// <param name="tolerance">The tolerance in decimal degrees.</param>
        /// <returns>
        /// <c>true</c> if location is within the expected radius, otherwise, <c>false</c>.
        /// </returns>
        public static bool IsWithinRange(double latitude, double longitude, double expectedLatitude, double expectedLongitude, double tolerance)
        {
            return GetDelta(latitude, longitude, expectedLatitude, expectedLongitude) <= Math.Abs(tolerance);
        }

        /// <summary>
        /// Gets the absolute delta between to locations.
        /// </summary>
        /// <param name="latitude">The latitude.</param>
        /// <param name="longitude">The longitude.</param>
        /// <param name="expectedLatitude">The expected latitude.</param>
        /// <param name="expectedLongitude">The expected longitude.</param>
        /// <returns>The absolute delta in decimal degrees.</returns>
        public static double GetDelta(double latitude, double longitude, double expectedLatitude, double expectedLongitude)
        {
            return Math.Abs(Math.Pow(Math.Pow(expectedLatitude - latitude, 2) + Math.Pow(expectedLongitude - longitude, 2), 0.5));
        }

        /// <summary>
        /// Escapes the specified string to create comma separated value string list.
        /// </summary>
        /// <param name="value">The string to escape.</param>
        /// <returns>The escaped string.</returns>
        private static string Escape(string value)
        {
            if (value.Contains(Quote))
            {
                value = value.Replace(Quote, EscapedQuote);
            }

            if (value.IndexOfAny(charactersRequiredToBeQuoted) > -1)
            {
                value = Quote + value + Quote;
            }

            return value;
        }

        /// <summary>
        /// Unescapes the specified string coming from create comma separated value string list.
        /// </summary>
        /// <param name="value">The string to unescape.</param>
        /// <returns>The unescaped string.</returns>
        private static string Unescape(string value)
        {
            if (value.StartsWith(Quote) && value.EndsWith(Quote))
            {
                value = value.Substring(1, value.Length - 2);

                if (value.Contains(EscapedQuote))
                {
                    value = value.Replace(EscapedQuote, Quote);
                }
            }

            return value;
        }
    }
}

   
    
    
    
  








Related examples in the same category

1.use the Format() method to format a string
2.Use the static String.Format() method to build a new string.
3.Fill placeholders using an array of objects.
4.Format a string
5.Use string.Format to format integer
6.The comma (,M) determines the field width and justification.
7.Control the width
8.left justify and align a set of strings to improve the appearance of program output
9.|{0,10:X}|{1,10}|{2:X}|{3}|
10.{0,4} {1,4} {2,4} {3,4} {4,4}
11.Format with {0:F}
12.Formats a string to an invariant culture
13.Formats a string to the current culture.
14.Clean \t (tab), \r from strings
15.Pad String
16.Convert the string e.g. fooBar to sentance case: FooBar
17.Formats the specified size as a string.
18.Converts a space delimited string into a single, compound pascal case string
19.To String Camel Case
20.Format Array To Comma Delimited String
21.Split the multi-line output into separate line strings
22.Convert Size to String
23.Format the given string using the provided collection of objects.
24.Get a string representation of flags.
25.Reads count number of characters and returns them as a string with any null terminators removed.
26.Truncate On Word Boundary
27.Camel/uncamel cases the specified input
28.Camel Case
29.To First Upper Case
30.To Pascal Case
31.Split Camel Case
32.Proper Case
33.Strips all illegal characters from the specified title
34.Appends a space before all capital letters in a sentence, except the first character.
35.Remove Illegal Characters
36.Remove Diacritics
37.StripSpaces removes spaces at the beginning and at the end of the value and replaces sequences of spaces with a single space
38.Display value in a grid
39.Amazon SimpleDB Util
40.Get the last word
41.Implementation of the Infelctor in Ruby that transforms words from singular to plural
42.Strips all illegal characters from the specified title.