Best String Extension Methods
public static class StringExtensions
{
///
/// if the string is NULL, converts it to string.empty. Helpful when trying to avoid null conditions.
///
///
///
public static string IsNullThenEmpty(this string inString)
{
if (inString == null)
return string.Empty;
else
return inString;
}
public static string[] GetStringInBetween(this string strSource, string strBegin, string strEnd, bool includeBegin, bool includeEnd)
{
string[] result = { "", "" };
int iIndexOfBegin = strSource.IndexOf(strBegin);
if (iIndexOfBegin != -1)
{
// include the Begin string if desired
if (includeBegin)
iIndexOfBegin -= strBegin.Length;
strSource = strSource.Substring(iIndexOfBegin
+ strBegin.Length);
int iEnd = strSource.IndexOf(strEnd);
if (iEnd != -1)
{
// include the End string if desired
if (includeEnd)
iEnd += strEnd.Length;
result[0] = strSource.Substring(0, iEnd);
// advance beyond this segment
if (iEnd + strEnd.Length < strSource.Length)
result[1] = strSource.Substring(iEnd
+ strEnd.Length);
}
}
else
// stay where we are
result[1] = strSource;
return result;
}
public static T ToEnum(this string value)
where T : struct
{
//Debug.Assert(!string.IsNullOrEmpty(value));
return (T)Enum.Parse(typeof(T), value, true);
}
public static string Nl2Br(this string s)
{
return s.Replace("\r\n", "
").Replace("\n", "
");
}
public static string Format(this string format, object arg, params object[] additionalArgs)
{
if (additionalArgs == null || additionalArgs.Length == 0)
{
return string.Format(format, arg);
}
else
{
return string.Format(format, new object[] { arg }.Concat(additionalArgs).ToArray());
}
}
public static bool ContainsAny(this string theString, char[] characters)
{
foreach (char character in characters)
{
if (theString.Contains(character.ToString()))
{
return true;
}
}
return false;
}
///
/// Strip a string of the specified substring.
///
/// the string to process
/// substring to remove
///
/// string s = "abcde";
///
/// s = s.Strip("bcd"); //s becomes 'ae;
///
///
public static string Strip(this string s, string subString)
{
s = s.Replace(subString, "");
return s;
}
///
/// Strip a string of the specified character.
///
/// the string to process
/// character to remove from the string
///
/// string s = "abcde";
///
/// s = s.Strip('b'); //s becomes 'acde;
///
///
public static string Strip(this string s, char character)
{
s = s.Replace(character.ToString(), "");
return s;
}
///
/// Strip a string of the specified characters.
///
/// the string to process
/// list of characters to remove from the string
///
/// string s = "abcde";
///
/// s = s.Strip('a', 'd'); //s becomes 'bce;
///
///
public static string Strip(this string s, params char[] chars)
{
foreach (char c in chars)
{
s = s.Replace(c.ToString(), "");
}
return s;
}
///
/// Splits a string into a NameValueCollection, where each "namevalue" is separated by
/// the "OuterSeparator". The parameter "NameValueSeparator" sets the split between Name and Value.
/// Example:
/// String str = "param1=value1;param2=value2";
/// NameValueCollection nvOut = str.ToNameValueCollection(';', '=');
///
/// The result is a NameValueCollection where:
/// key[0] is "param1" and value[0] is "value1"
/// key[1] is "param2" and value[1] is "value2"
///
/// String to process
/// Separator for each "NameValue"
/// Separator for Name/Value splitting
///
public static NameValueCollection ToNameValueCollection(this String str, Char OuterSeparator, Char NameValueSeparator)
{
NameValueCollection nvText = null;
str = str.TrimEnd(OuterSeparator);
if (!String.IsNullOrEmpty(str))
{
String[] arrStrings = str.TrimEnd(OuterSeparator).Split(OuterSeparator);
foreach (String s in arrStrings)
{
Int32 posSep = s.IndexOf(NameValueSeparator);
String name = s.Substring(0, posSep);
String value = s.Substring(posSep + 1);
if (nvText == null)
nvText = new NameValueCollection();
nvText.Add(name, value);
}
}
return nvText;
}
///
/// Truncates the string to a specified length and replace the truncated to a ...
///
/// string that will be truncated
/// total length of characters to maintain before the truncate happens
/// truncated string
public static string Truncate(this string text, int maxLength)
{
// replaces the truncated string to a ...
const string suffix = "...";
string truncatedString = text;
if (maxLength <= 0) return truncatedString;
int strLength = maxLength - suffix.Length;
if (strLength <= 0) return truncatedString;
if (text == null || text.Length <= maxLength) return truncatedString;
truncatedString = text.Substring(0, strLength);
truncatedString = truncatedString.TrimEnd();
truncatedString += suffix;
return truncatedString;
}
///
/// Returns the last few characters of the string with a length
/// specified by the given parameter. If the string's length is less than the
/// given length the complete string is returned. If length is zero or
/// less an empty string is returned
///
/// the string to process
/// Number of characters to return
///
public static string Right(this string s, int length)
{
length = Math.Max(length, 0);
if (s.Length > length)
{
return s.Substring(s.Length - length, length);
}
else
{
return s;
}
}
public static String left(this String s, int len)
{
return s.Substring(0, Math.Min(len, s.Length));
}
public static DateTime ToDateFromDDMMYYYY(this string date)
{
return DateTime.ParseExact(date, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
}
//Format string to Title case
public static string ToTitleCase(this string mText)
{
if (mText == null) return mText;
System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
// TextInfo.ToTitleCase only operates on the string if is all lower case, otherwise it returns the string unchanged.
return textInfo.ToTitleCase(mText.ToLower());
}
///
/// Parses a string into an Enum
///
/// The type of the Enum
/// String value to parse
/// The Enum corresponding to the stringExtensions
public static T EnumParse(this string value)
{
return EnumParse(value, false);
}
public static T EnumParse(this string value, bool ignorecase)
{
if (value == null)
{
throw new ArgumentNullException("value");
}
value = value.Trim();
if (value.Length == 0)
{
throw new ArgumentException("Must specify valid information for parsing in the string.", "value");
}
Type t = typeof(T);
if (!t.IsEnum)
{
throw new ArgumentException("Type provided must be an Enum.", "T");
}
return (T)Enum.Parse(t, value, ignorecase);
}
// Enable quick and more natural string.Format calls
public static string F(this string s, params object[] args)
{
return string.Format(s, args);
}
public static DateTime? ToDateTime(this string source)
{
if (!string.IsNullOrEmpty(source))
{
return Convert.ToDateTime(source);
}
return null;
}
public static int? ToNullableInt(this string source)
{
var i = 0;
return int.TryParse(source, out i) ? (int?)i : null;
}
public static string ToPlural(this string singular)
{
// Multiple words in the form A of B : Apply the plural to the first word only (A)
int index = singular.LastIndexOf(" of ");
if (index > 0) return (singular.Substring(0, index)) + singular.Remove(0, index).ToPlural();
// single Word rules
//sibilant ending rule
if (singular.EndsWith("sh")) return singular + "es";
if (singular.EndsWith("ch")) return singular + "es";
if (singular.EndsWith("us")) return singular + "es";
if (singular.EndsWith("ss")) return singular + "es";
//-ies rule
if (singular.EndsWith("y")) return singular.Remove(singular.Length - 1, 1) + "ies";
// -oes rule
if (singular.EndsWith("o")) return singular.Remove(singular.Length - 1, 1) + "oes";
// -s suffix rule
return singular + "s";
}
public static bool IsValidEmailAddress(this string s)
{
Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
return regex.IsMatch(s);
}
///
/// Converts a string into a "SecureString"
///
/// Input String
///
public static System.Security.SecureString ToSecureString(this String str)
{
System.Security.SecureString secureString = new System.Security.SecureString();
foreach (Char c in str)
secureString.AppendChar(c);
return secureString;
}
public static string ToProperCase(this string text)
{
System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
return textInfo.ToTitleCase(text);
}
public static bool IsNumeric(this string theValue)
{
long retNum;
return long.TryParse(theValue, System.Globalization.NumberStyles.Integer, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
}
public static bool IsNotNullOrEmpty(this string input)
{
return !String.IsNullOrEmpty(input);
}
public static bool IsNullOrEmpty(this string input)
{
return String.IsNullOrEmpty(input);
}
public static bool IsNotNullOrEmptyOrSpace(this string input)
{
if (!String.IsNullOrEmpty(input))
{
return !String.IsNullOrEmpty(input.Trim());
}
else
{
return true;
}
}
public static bool IsNullOrEmptyOrSpace(this string input)
{
if (!String.IsNullOrEmpty(input))
{
return String.IsNullOrEmpty(input.Trim());
}
else
{
return true;
}
}
///
/// Count all words in a given string
///
/// string to begin with
/// int
public static int WordCount(this string input)
{
var count = 0;
try
{
// Exclude whitespaces, Tabs and line breaks
var re = new Regex(@"[^\s]+");
var matches = re.Matches(input);
count = matches.Count;
}
catch
{
}
return count;
}
}
Compiled By: Rajesh Rolen
Read More