Determines whether the string has white space.

#region License
// Copyright (c) 2007 James Newton-King
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the “Software”), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
#endregion

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Newtonsoft.Utilities.Text
{
public static class StringExtensions
{

///

/// Determines whether the string has white space.
///

/// The string to test for white space. ///
/// true if the string has white space; otherwise, false.
///

public static bool HasWhiteSpace(this string s)
{
if (s == null)
throw new ArgumentNullException(“s”);

for (int i = 0; i < s.Length; i++) { if (char.IsWhiteSpace(s[i])) return true; } return false; } } } [/csharp]

Add leading and trailing double quotes to the provided string if required.

   
 
//CruiseControl is open source software and is developed and maintained by a group of dedicated volunteers. 
//CruiseControl is distributed under a BSD-style license.
//http://cruisecontrol.sourceforge.net/
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace ThoughtWorks.CruiseControl.Core.Util
{
    /// <summary>
    /// Class with handy stirng routines
    /// </summary>
    public class StringUtil
    {

        /// <summary>
        /// Add leading and trailing double quotes to the provided string if required.
        /// If the string contains a trailing backslash, that escape the added double quote,
        /// escape it also with another backslash.
        /// </summary>
        /// <param name="value">The string to double quote.</param>
        /// <returns>A double quoted string.</returns>
        public static string AutoDoubleQuoteString(string value)
        {
            if (!string.IsNullOrEmpty(value) &amp;&amp; (value.IndexOf(&#039; &#039;) > -1) &amp;&amp; (value.IndexOf(&#039;"&#039;) == -1))
            {
                if (value.EndsWith(@""))
                    value = string.Concat(value, @"");

                return string.Concat(&#039;"&#039;, value, &#039;"&#039;);
            }

            return value;
        }
   }
}

   
     


If necessary, adds zeros to the beginning of a value so that the total length matches the given precision

//
// (C) Copyright 2009 Irantha Suwandarathna (irantha@gmail.com)
// All rights reserved.
//

/* Copyright (c) 2001-2008, The HSQL Development Group
* All rights reserved.
*
* Redistribution and use _in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions _in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer _in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the HSQL Development Group nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

using System;
using System.Text;
using System.Collections.Generic;

namespace EffiProz.Core.Lib
{

/** Provides a collection of convenience methods for processing and
* creating objects with String value components.
*
* @author fredt@users
* @author boucherb@users
* @version 1.7.2
* @since 1.7.0
*/
public class StringUtil
{
/**
* If necessary, adds zeros to the beginning of a value so that the total
* length matches the given precision, otherwise trims the right digits.
* Then if maxSize is smaller than precision, trims the right digits to
* maxSize. Negative values are treated as positive
*/
public static String toZeroPaddedString(long value, int precision,
int maxSize)
{

StringBuilder sb = new StringBuilder();

if (value < 0) { value = -value; } String s = value.ToString(); if (s.Length > precision)
{
s = s.Substring(precision);
}

for (int i = s.Length; i < precision; i++) { sb.Append('0'); } sb.Append(s); if (maxSize < precision) { sb.Length = maxSize; } return sb.ToString(); } } } [/csharp]

String Utils

   
 
#region License
// Copyright (c) 2007 James Newton-King
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
#endregion

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Linq;
using System.Globalization;

namespace Newtonsoft.Json.Utilities
{
  internal static class StringUtils
  {
    public const string CarriageReturnLineFeed = "
";
    public const string Empty = "";
    public const char CarriageReturn = &#039;
&#039;;
    public const char LineFeed = &#039;
&#039;;
    public const char Tab = &#039;	&#039;;

    //public static string FormatWith(this string format, params object[] args)
    //{
    //  return FormatWith(format, null, args);
    //}

    public static string FormatWith(this string format, IFormatProvider provider, params object[] args)
    {
      

      return string.Format(provider, format, args);
    }

    /// <summary>
    /// Determines whether the string contains white space.
    /// </summary>
    /// <param name="s">The string to test for white space.</param>
    /// <returns>
    ///   <c>true</c> if the string contains white space; otherwise, <c>false</c>.
    /// </returns>
    public static bool ContainsWhiteSpace(string s)
    {
      if (s == null)
        throw new ArgumentNullException("s");

      for (int i = 0; i < s.Length; i++)
      {
        if (char.IsWhiteSpace(s&#91;i&#93;))
          return true;
      }
      return false;
    }

    /// <summary>
    /// Determines whether the string is all white space. Empty string will return false.
    /// </summary>
    /// <param name="s">The string to test whether it is all white space.</param>
    /// <returns>
    ///   <c>true</c> if the string is all white space; otherwise, <c>false</c>.
    /// </returns>
    public static bool IsWhiteSpace(string s)
    {
      if (s == null)
        throw new ArgumentNullException("s");

      if (s.Length == 0)
        return false;

      for (int i = 0; i < s.Length; i++)
      {
        if (!char.IsWhiteSpace(s&#91;i&#93;))
          return false;
      }

      return true;
    }

    /// <summary>
    /// Ensures the target string ends with the specified string.
    /// </summary>
    /// <param name="target">The target.</param>
    /// <param name="value">The value.</param>
    /// <returns>The target string with the value string at the end.</returns>
    public static string EnsureEndsWith(string target, string value)
    {
      if (target == null)
        throw new ArgumentNullException("target");

      if (value == null)
        throw new ArgumentNullException("value");

      if (target.Length >= value.Length)
      {
        if (string.Compare(target, target.Length - value.Length, value, 0, value.Length, StringComparison.OrdinalIgnoreCase) ==
                        0)
          return target;

        string trimmedString = target.TrimEnd(null);

        if (string.Compare(trimmedString, trimmedString.Length - value.Length, value, 0, value.Length,
                        StringComparison.OrdinalIgnoreCase) == 0)
          return target;
      }

      return target + value;
    }

    public static bool IsNullOrEmptyOrWhiteSpace(string s)
    {
      if (string.IsNullOrEmpty(s))
        return true;
      else if (IsWhiteSpace(s))
        return true;
      else
        return false;
    }

    /// <summary>
    /// Perform an action if the string is not null or empty.
    /// </summary>
    /// <param name="value">The value.</param>
    /// <param name="action">The action to perform.</param>
    public static void IfNotNullOrEmpty(string value, Action<string> action)
    {
      IfNotNullOrEmpty(value, action, null);
    }

    private static void IfNotNullOrEmpty(string value, Action<string> trueAction, Action<string> falseAction)
    {
      if (!string.IsNullOrEmpty(value))
      {
        if (trueAction != null)
          trueAction(value);
      }
      else
      {
        if (falseAction != null)
          falseAction(value);
      }
    }

    /// <summary>
    /// Indents the specified string.
    /// </summary>
    /// <param name="s">The string to indent.</param>
    /// <param name="indentation">The number of characters to indent by.</param>
    /// <returns></returns>
    public static string Indent(string s, int indentation)
    {
      return Indent(s, indentation, &#039; &#039;);
    }

    /// <summary>
    /// Indents the specified string.
    /// </summary>
    /// <param name="s">The string to indent.</param>
    /// <param name="indentation">The number of characters to indent by.</param>
    /// <param name="indentChar">The indent character.</param>
    /// <returns></returns>
    public static string Indent(string s, int indentation, char indentChar)
    {
      if (s == null)
        throw new ArgumentNullException("s");

      if (indentation <= 0)
        throw new ArgumentException("Must be greater than zero.", "indentation");

      StringReader sr = new StringReader(s);
      StringWriter sw = new StringWriter(CultureInfo.InvariantCulture);

      ActionTextReaderLine(sr, sw, delegate(TextWriter tw, string line)
      {
        tw.Write(new string(indentChar, indentation));
        tw.Write(line);
      });

      return sw.ToString();
    }

    private delegate void ActionLine(TextWriter textWriter, string line);

    private static void ActionTextReaderLine(TextReader textReader, TextWriter textWriter, ActionLine lineAction)
    {
      string line;
      bool firstLine = true;
      while ((line = textReader.ReadLine()) != null)
      {
        if (!firstLine)
          textWriter.WriteLine();
        else
          firstLine = false;

        lineAction(textWriter, line);
      }
    }

    /// <summary>
    /// Numbers the lines.
    /// </summary>
    /// <param name="s">The string to number.</param>
    /// <returns></returns>
    public static string NumberLines(string s)
    {
      if (s == null)
        throw new ArgumentNullException("s");

      StringReader sr = new StringReader(s);
      StringWriter sw = new StringWriter(CultureInfo.InvariantCulture);

      int lineNumber = 1;

      ActionTextReaderLine(sr, sw, delegate(TextWriter tw, string line)
      {
        tw.Write(lineNumber.ToString(CultureInfo.InvariantCulture).PadLeft(4));
        tw.Write(". ");
        tw.Write(line);

        lineNumber++;
      });

      return sw.ToString();
    }

    /// <summary>
    /// Nulls an empty string.
    /// </summary>
    /// <param name="s">The string.</param>
    /// <returns>Null if the string was null, otherwise the string unchanged.</returns>
    public static string NullEmptyString(string s)
    {
      return (string.IsNullOrEmpty(s)) ? null : s;
    }

    public static string ReplaceNewLines(string s, string replacement)
    {
      StringReader sr = new StringReader(s);
      StringBuilder sb = new StringBuilder();

      bool first = true;

      string line;
      while ((line = sr.ReadLine()) != null)
      {
        if (first)
          first = false;
        else
          sb.Append(replacement);

        sb.Append(line);
      }

      return sb.ToString();
    }

    public static string Truncate(string s, int maximumLength)
    {
      return Truncate(s, maximumLength, "...");
    }

    public static string Truncate(string s, int maximumLength, string suffix)
    {
      if (suffix == null)
        throw new ArgumentNullException("suffix");

      if (maximumLength <= 0)
        throw new ArgumentException("Maximum length must be greater than zero.", "maximumLength");

      int subStringLength = maximumLength - suffix.Length;

      if (subStringLength <= 0)
        throw new ArgumentException("Length of suffix string is greater or equal to maximumLength");

      if (s != null &amp;&amp; s.Length > maximumLength)
      {
        string truncatedString = s.Substring(0, subStringLength);
        // incase the last character is a space
        truncatedString = truncatedString.Trim();
        truncatedString += suffix;

        return truncatedString;
      }
      else
      {
        return s;
      }
    }

    public static StringWriter CreateStringWriter(int capacity)
    {
      StringBuilder sb = new StringBuilder(capacity);
      StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);

      return sw;
    }

    public static int? GetLength(string value)
    {
      if (value == null)
        return null;
      else
        return value.Length;
    }
    public static char IntToHex(int n)
    {
      if (n <= 9)
      {
        return (char)(n + 48);
      }
      return (char)((n - 10) + 97);
    }
    public static string ToCharAsUnicode(char c)
    {
      char h1 = IntToHex((c >> 12) &amp; &#039;x000f&#039;);
      char h2 = IntToHex((c >> 8) &amp; &#039;x000f&#039;);
      char h3 = IntToHex((c >> 4) &amp; &#039;x000f&#039;);
      char h4 = IntToHex(c &amp; &#039;x000f&#039;);

      return new string(new[] { &#039;&#039;, &#039;u&#039;, h1, h2, h3, h4 });
    }

    public static void WriteCharAsUnicode(TextWriter writer, char c)
    {
      

      char h1 = IntToHex((c >> 12) &amp; &#039;x000f&#039;);
      char h2 = IntToHex((c >> 8) &amp; &#039;x000f&#039;);
      char h3 = IntToHex((c >> 4) &amp; &#039;x000f&#039;);
      char h4 = IntToHex(c &amp; &#039;x000f&#039;);

      writer.Write(&#039;&#039;);
      writer.Write(&#039;u&#039;);
      writer.Write(h1);
      writer.Write(h2);
      writer.Write(h3);
      writer.Write(h4);
    }

    public static TSource ForgivingCaseSensitiveFind<TSource>(this IEnumerable<TSource> source, Func<TSource, string> valueSelector, string testValue)
    {
      if (source == null)
        throw new ArgumentNullException("source");
      if (valueSelector == null)
        throw new ArgumentNullException("valueSelector");

      var caseInsensitiveResults = source.Where(s => string.Compare(valueSelector(s), testValue, StringComparison.OrdinalIgnoreCase) == 0);
      if (caseInsensitiveResults.Count() <= 1)
      {
        return caseInsensitiveResults.SingleOrDefault();
      }
      else
      {
        // multiple results returned. now filter using case sensitivity
        var caseSensitiveResults = source.Where(s => string.Compare(valueSelector(s), testValue, StringComparison.Ordinal) == 0);
        return caseSensitiveResults.SingleOrDefault();
      }
    }
  }
}

   
     


Ensures that a given array can hold up to minCapacity elements.

/*
Copyright 1999 CERN – European Organization for Nuclear Research.
Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose
is hereby granted without fee, provided that the above copyright notice appear in all copies and
that both that copyright notice and this permission notice appear in supporting documentation.
CERN makes no representations about the suitability of this software for any purpose.
It is provided “as is” without expressed or implied warranty.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DiscoveryLogic.Common.Numeric
{
public class Arrays : System.Object
{
///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static sbyte[] ensureCapacity(sbyte[] array, int minCapacity)
{
int oldCapacity = array.Length;
sbyte[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new sbyte[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } ///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static short[] ensureCapacity(short[] array, int minCapacity)
{
int oldCapacity = array.Length;
short[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new short[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } ///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static bool[] ensureCapacity(bool[] array, int minCapacity)
{
int oldCapacity = array.Length;
bool[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new bool[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } ///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static char[] ensureCapacity(char[] array, int minCapacity)
{
int oldCapacity = array.Length;
char[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new char[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } ///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static double[] ensureCapacity(double[] array, int minCapacity)
{
int oldCapacity = array.Length;
double[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new double[newCapacity]; //for (int i = oldCapacity; --i >= 0; ) newArray[i] = array[i];
Array.Copy(array, 0, newArray, 0, oldCapacity);
}
else
{
newArray = array;
}
return newArray;
}

///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static float[] ensureCapacity(float[] array, int minCapacity)
{
int oldCapacity = array.Length;
float[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new float[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } ///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static int[] ensureCapacity(int[] array, int minCapacity)
{
int oldCapacity = array.Length;
int[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new int[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } ///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static long[] ensureCapacity(long[] array, int minCapacity)
{
int oldCapacity = array.Length;
long[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new long[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } ///

Ensures that a given array can hold up to minCapacity elements.
///
/// Returns the identical array if it can hold at least the number of elements specified.
/// Otherwise, returns a new array with increased capacity containing the same elements, ensuring
/// that it can hold at least the number of elements specified by
/// the minimum capacity argument.
///
///

/// the desired minimum capacity.
/// public static System.Object[] ensureCapacity(System.Object[] array, int minCapacity)
{
int oldCapacity = array.Length;
System.Object[] newArray;
if (minCapacity > oldCapacity)
{
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity) { newCapacity = minCapacity; } newArray = new System.Object[newCapacity]; Array.Copy(array, 0, newArray, 0, oldCapacity); } else { newArray = array; } return newArray; } } } [/csharp]

Get delimited chars from a string.

   
 

/*
 * 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
{
   
    public class StringHelpers
    {
        /// <summary>
        /// Get delimited chars from a string.
        /// </summary>
        /// <param name="rawText">search-classes-workshops-4-1-1-6</param>
        /// <param name="excludeText">search-classes-workshops</param>
        /// <param name="delimiter">-</param>
        /// <returns></returns>
        public static string[] GetDelimitedChars(string rawText, string excludeText, char delimiter)
        {
            int indexOfDelimitedData = rawText.IndexOf(excludeText);
            string delimitedData = rawText.Substring(indexOfDelimitedData + excludeText.Length);
            string[] separatedChars = delimitedData.Split(delimiter);
            return separatedChars;
        }
   }
}

   
     


Remove Trailing Path Delimeter

   
 
//CruiseControl is open source software and is developed and maintained by a group of dedicated volunteers. 
//CruiseControl is distributed under a BSD-style license.
//http://cruisecontrol.sourceforge.net/
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace ThoughtWorks.CruiseControl.Core.Util
{
    /// <summary>
    /// Class with handy stirng routines
    /// </summary>
    public class StringUtil
    {

        public static string RemoveTrailingPathDelimeter(string directory)
        {
            return string.IsNullOrEmpty(directory) ? string.Empty : directory.TrimEnd(new char[] { Path.DirectorySeparatorChar });
        }
   }
}