Thursday 16 February 2017

C# : String Helper Class


Please find StringHelper class for working on string related functionalities


public static class StringHelper
    {
        /// <summary>
        /// Receives string and retruns the string with its letters reversed.
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static string ReverseString(string s)
        {
            char[] arr = s.ToCharArray();
            Array.Reverse(arr);
            return new string(arr);
        }
 
        //Convert string to PorperCase
        public static String PCase(String strParam)
        {
            String strProper = strParam.Substring(0, 1).ToUpper();
            strParam = strParam.Substring(1).ToLower();
            String strPrev = "";
 
            for (int iIndex = 0; iIndex < strParam.Length; iIndex++)
            {
                if (iIndex > 1)
                {
                    strPrev = strParam.Substring(iIndex - 1, 1);
                }
 
                if (strPrev.Equals(" ") ||
                strPrev.Equals("\t") ||
                strPrev.Equals("\n") ||
                strPrev.Equals("."))
                {
                    strProper += strParam.Substring(iIndex, 1).ToUpper();
                }
                else
                {
                    strProper += strParam.Substring(iIndex, 1);
                }
            }
            return strProper;
        } // Replace string with a found string in the source string
        public static String Replace(String strText, String strFind, String
        strReplace)
        {
            int iPos = strText.IndexOf(strFind);
            String strReturn = "";
 
            while (iPos != -1)
            {
                strReturn += strText.Substring(0, iPos) + strReplace;
                strText = strText.Substring(iPos + strFind.Length);
                iPos = strText.IndexOf(strFind);
            }
 
            if (strText.Length > 0)
                strReturn += strText;
            return strReturn;
        }
 
        // Trim the string to contain only a single whitepace between words
        public static String ToSingleSpace(String strParam)
        {
            int iPosition = strParam.IndexOf(" ");
            if (iPosition == -1)
            {
                return strParam;
            }
            else
            {
                return ToSingleSpace(strParam.Substring(0, iPosition) +
                strParam.Substring(iPosition + 1));
            }
        }
 
        // Count the number of occurrences of a substring in a source string
        // case sensitive
        public static int CharCount(String strSource, String strToCount)
        {
            int iCount = 0;
            int iPos = strSource.IndexOf(strToCount);
 
            while (iPos != -1)
            {
                iCount++;
                strSource = strSource.Substring(iPos + 1);
                iPos = strSource.IndexOf(strToCount);
            }
            return iCount;
        }
 
        // Count the number of occurrences of a substring in a source string
        // case insensitive
        public static int CharCount(String strSource, String strToCount,
                                    bool IgnoreCase)
        {
            if (IgnoreCase)
            {
                return CharCount(strSource.ToLower(), strToCount.ToLower());
            }
            else
            {
                return CharCount(strSource, strToCount);
            }
        }
 
        /// <summary>
        ///Reverse the String passed 
        /// </summary>
        /// <param name="strParam"></param>
        /// <returns></returns>
        public static String Reverse(String strParam)
        {
            if (strParam.Length == 1)
            {
                return strParam;
            }
            else
            {
                return Reverse(strParam.Substring(1)) +
                        strParam.Substring(0, 1);
            }
        }
 
        // Get a number of characters of a string from the beginning
        public static String Left(String strParam, int iLen)
        {
            if (iLen > 0)
                return strParam.Substring(0, iLen);
            else
                return strParam;
        }
 
        // Get a number of characters of a string from then end
        public static String Right(String strParam, int iLen)
        {
            if (iLen > 0)
                return strParam.Substring(strParam.Length - iLen, iLen);
            else
                return strParam;
        }
 
        // Test if the string is Palindrome
        public static bool IsPalindrome(String strParam)
        {
            int iLength, iHalfLen;
            iLength = strParam.Length - 1;
            iHalfLen = iLength / 2;
 
            for (int iIndex = 0; iIndex <= iHalfLen; iIndex++)
            {
                if (strParam.Substring(iIndex, 1) != 
                    strParam.Substring(iLength - iIndex, 1))
                {
                    return false;
                }
            }
            return true;
        }
 
        /// <summary>
        /// Returns a string of all characters to 
        /// the left of the search character. 
        /// If the character cannot be found in the source string,
        /// the entire string is 
        /// returned. The rationale here is that the entire string is 
        /// scanned for the search 
        /// character, and, not being found, 
        /// the method returns all the characters scanned.
        /// </summary>
        /// <param name="src"></param>
        /// <param name="c"></param>
        /// <returns></returns>
        public static string LeftOf(string src, char c)
        {
            string ret = src;
            int idx = src.IndexOf(c);
            if (idx != -1)
            {
                ret = src.Substring(0, idx);
            }
            return ret;
        }
        /// <summary>
        /// Returns a string of all characters to the left 
        /// of the nth occurrence of the 
        /// search character. If the character cannot
        ///  be found in the source string, 
        /// the entire string is returned. The rationale here 
        /// is that the entire string is 
        /// scanned for the search character, and, not being found, 
        /// the method returns all 
        /// the characters scanned.
        /// </summary>
        /// <param name="src"></param>
        /// <param name="c"></param>
        /// <param name="n"></param>
        /// <returns></returns>
        public static string LeftOf(string src, char c, int n)
        {
            string ret = src;
            int idx = -1;
            while (n > 0)
            {
                idx = src.IndexOf(c, idx + 1);
                if (idx == -1)
                {
                    break;
                }
            }
            if (idx != -1)
            {
                ret = src.Substring(0, idx);
            }
            return ret;
        }
 
        /// <summary>
        /// Returns a string of all characters to the 
        /// right of the search character. 
        /// If the character cannot be found in the source string, 
        /// an empty string is returned. 
        /// The rationale here is that the entire string is scanned for 
        /// the search character, 
        /// but until the search character is found, 
        /// these characters are ignored. 
        /// Therefore, 
        /// if the search character is not found, 
        /// the method returns an empty string.
        /// </summary>
        /// <param name="src"></param>
        /// <param name="c"></param>
        /// <returns></returns>
        public static string RightOf(string src, char c)
        {
            string ret = String.Empty;
            int idx = src.IndexOf(c);
            if (idx != -1)
            {
                ret = src.Substring(idx + 1);
            }
            return ret;
        }
        /// <summary>
        /// Returns a string of all characters to the right
        /// of the nth occurrence of 
        /// the search character 
        /// </summary>
        /// <param name="src"></param>
        /// <param name="c"></param>
        /// <param name="n"></param>
        /// <returns></returns>
        public static string RightOf(string src, char c, int n)
        {
            string ret = String.Empty;
            int idx = -1;
            while (n > 0)
            {
                idx = src.IndexOf(c, idx + 1);
                if (idx == -1)
                {
                    break;
                }
                --n;
            }
 
            if (idx != -1)
            {
                ret = src.Substring(idx + 1);
            }
 
            return ret;
        }
        /// <summary>
        /// Returns a string of all characters to the left 
        /// of the rightmost occurrence of 
        /// the search character. If the character cannot be found
        /// in the source string, 
        /// the entire string is returned. 
        /// The rationale here is that the entire string 
        /// is scanned for the search character, and, not being found, 
        /// the method returns all the characters scanned.
        /// </summary>
        /// <param name="src"></param>
        /// <param name="c"></param>
        /// <returns></returns>
        public static string LeftOfRightmostOf(string src, char c)
        {
            string ret = src;
            int idx = src.LastIndexOf(c);
            if (idx != -1)
            {
                ret = src.Substring(0, idx);
            }
            return ret;
        }
 
        /// <summary>
        /// Returns the string that is between the two 
        /// specified search characters. 
        /// The returned string excludes the search characters. 
        /// If the starting character 
        /// is not found, an empty string is returned.
        /// If the ending character is 
        /// not found after the starting character, 
        /// an empty string is returned.
        /// </summary>
        /// <param name="src"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public static string Between(string src, char start, char end)
        {
            string ret = String.Empty;
            int idxStart = src.IndexOf(start);
            if (idxStart != -1)
            {
                ++idxStart;
                int idxEnd = src.IndexOf(end, idxStart);
                if (idxEnd != -1)
                {
                    ret = src.Substring(idxStart, idxEnd - idxStart);
                }
            }
            return ret;
        }
 
        /// <summary>
        /// Returns 0 if no occurrences of the search 
        /// character are found in the source 
        /// string.
        /// </summary>
        /// <param name="src"></param>
        /// <param name="find"></param>
        /// <returns></returns>
        public static int Count(string src, char find)
        {
            int ret = 0;
            foreach (char s in src)
            {
                if (s == find)
                {
                    ++ret;
                }
            }
            return ret;
        }
        /// <summary>
        /// Returns '\0' if the string is empty.
        /// </summary>
        /// <param name="src"></param>
        /// <returns></returns>
        public static char Rightmost(string src)
        {
            char c = '\0';
            if (src.Length > 0)
            {
                c = src[src.Length - 1];
            }
            return c;
        }
        /// <summary>
        /// Check particular string present in provided string or not
        /// </summary>
        /// <param name="source"></param>
        /// <param name="toCheck"></param>
        /// <param name="comp"></param>
        /// <returns></returns>
        public static bool Contains(this string source, string toCheck, 
                                    StringComparison comp)
        {
            return source.IndexOf(toCheck, comp) >= 0;
        }
        /// <summary>
        /// Check value is present or not
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool HasValue(this string value)
        {
            return !String.IsNullOrWhiteSpace(value);
        }
 
        /// <summary>
        ///  Get Integer value from string
        /// </summary>
        /// <param name="value"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static int GetIntValue(this string value, int defaultValue = 0)
        {
            int val;
            return string.IsNullOrWhiteSpace(value)
                       ? defaultValue
                       : int.TryParse(value, out val) ? val : defaultValue;
        }
 
    }

No comments:

Post a Comment