Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / Utils / StringUtil.cs / 1305376 / StringUtil.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Globalization; using System.Diagnostics; namespace System.Data.Common.Utils { // This class provides some useful string utilities, e.g., converting a // list to string. internal static class StringUtil { private const string s_defaultDelimiter = ", "; #region String Conversion - Unsorted ////// Converts an enumeration of values to a delimited string list. /// ///Type of elements to convert. /// Values. If null, returns empty string. /// Converter. If null, uses default invariant culture converter. /// Delimiter. If null, uses default (', ') ///Delimited list of values in string. internal static string BuildDelimitedList(IEnumerable values, ToStringConverter converter, string delimiter) { if (null == values) { return String.Empty; } if (null == converter) { converter = new ToStringConverter (InvariantConvertToString ); } if (null == delimiter) { delimiter = s_defaultDelimiter; } StringBuilder sb = new StringBuilder(); bool first = true; foreach (T value in values) { if (first) { first = false; } else { sb.Append(delimiter); } sb.Append(converter(value)); } return sb.ToString(); } // effects: Converts list to a string separated by a comma with // string.Empty used for null values internal static string ToCommaSeparatedString(IEnumerable list) { return ToSeparatedString(list, s_defaultDelimiter, string.Empty); } // effects: Converts list to a string separated by "separator" with // "nullValue" used for null values internal static string ToSeparatedString(IEnumerable list, string separator, string nullValue) { StringBuilder builder = new StringBuilder(); ToSeparatedString(builder, list, separator, nullValue); return builder.ToString(); } #endregion #region String Conversion - Sorted // effects: Converts the list to a list of strings, sorts its // and then converts to a string separated by a comma with // string.Empty used for null values internal static string ToCommaSeparatedStringSorted(IEnumerable list) { return ToSeparatedStringSorted(list, s_defaultDelimiter, string.Empty); } // effects: Converts the list to a list of strings, sorts its using // StringComparer.Ordinal // and then converts to a string separated by "separator" with // with "nullValue" used for null values internal static string ToSeparatedStringSorted(IEnumerable list, string separator, string nullValue) { StringBuilder builder = new StringBuilder(); ToSeparatedStringPrivate(builder, list, separator, nullValue, true); return builder.ToString(); } #endregion #region StringBuilder routines internal static string MembersToCommaSeparatedString(IEnumerable members) { StringBuilder builder = new StringBuilder(); builder.Append("{"); StringUtil.ToCommaSeparatedString(builder, members); builder.Append("}"); return builder.ToString(); } internal static void ToCommaSeparatedString(StringBuilder builder, IEnumerable list) { ToSeparatedStringPrivate(builder, list, s_defaultDelimiter, string.Empty, false); } internal static void ToCommaSeparatedStringSorted(StringBuilder builder, IEnumerable list) { ToSeparatedStringPrivate(builder, list, s_defaultDelimiter, string.Empty, true); } internal static void ToSeparatedString(StringBuilder builder, IEnumerable list, string separator) { ToSeparatedStringPrivate(builder, list, separator, string.Empty, false); } internal static void ToSeparatedStringSorted(StringBuilder builder, IEnumerable list, string separator) { ToSeparatedStringPrivate(builder, list, separator, string.Empty, true); } // effects: Modifies stringBuilder to contain a string of values from list // separated by "separator" with "nullValue" used for null values internal static void ToSeparatedString(StringBuilder stringBuilder, IEnumerable list, string separator, string nullValue) { ToSeparatedStringPrivate(stringBuilder, list, separator, nullValue, false); } // effects: Converts the list to a list of strings, sorts its (if // toSort is true) and then converts to a string separated by // "separator" with "nullValue" used for null values. private static void ToSeparatedStringPrivate(StringBuilder stringBuilder, IEnumerable list, string separator, string nullValue, bool toSort) { if (null == list) { return; } bool isFirst = true; // Get the list of strings first List elementStrings = new List (); foreach (object element in list) { string str; // Get the element or its default null value if (element == null) { str = nullValue; } else { str = FormatInvariant("{0}", element); } elementStrings.Add(str); } if (toSort == true) { // Sort the list elementStrings.Sort(StringComparer.Ordinal); } // Now add the strings to the stringBuilder foreach (string str in elementStrings) { if (false == isFirst) { stringBuilder.Append(separator); } stringBuilder.Append(str); isFirst = false; } } #endregion #region Some Helper routines /// /// This private static method checks a string to make sure that it is not empty. /// Comparing with String.Empty is not sufficient since a string with nothing /// but white space isn't considered "empty" by that rationale. /// internal static bool IsNullOrEmptyOrWhiteSpace(string value) { return IsNullOrEmptyOrWhiteSpace(value, 0); } internal static bool IsNullOrEmptyOrWhiteSpace(string value, int offset) { // don't use Trim(), which will copy the string, which may be large, just to test for emptyness //return String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim()); if (null != value) { for(int i = offset; i < value.Length; ++i) { if (!Char.IsWhiteSpace(value[i])) { return false; } } } return true; } // separate implementation from IsNullOrEmptyOrWhiteSpace(string, int) because that one will // pick up the jit optimization to avoid boundary checks and the this won't is unknown (most likely not) [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] // referenced by System.Data.Entity.Design.dll internal static bool IsNullOrEmptyOrWhiteSpace(string value, int offset, int length) { // don't use Trim(), which will copy the string, which may be large, just to test for emptyness //return String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim()); if (null != value) { length = Math.Min(value.Length, length); for(int i = offset; i < length; ++i) { if (!Char.IsWhiteSpace(value[i])) { return false; } } } return true; } internal static string FormatInvariant(string format, params object[] args) { Debug.Assert(args.Length > 0, "Formatting utilities must be called with at least one argument"); return String.Format(CultureInfo.InvariantCulture, format, args); } // effects: Formats args according to the format string and adds it // to builder. Returns the modified builder internal static StringBuilder FormatStringBuilder(StringBuilder builder, string format, params object[] args) { Debug.Assert(args.Length > 0, "Formatting utilities must be called with at least one argument"); builder.AppendFormat(CultureInfo.InvariantCulture, format, args); return builder; } // effects: Generates a new line and then indents the new line by // indent steps in builder -- indent steps are determined internally // by this method. Returns the modified builder internal static StringBuilder IndentNewLine(StringBuilder builder, int indent) { builder.AppendLine(); for (int i = 0; i < indent; i++) { builder.Append(" "); } return builder; } // effects: returns a string of the form 'arrayVarName[index]' internal static string FormatIndex(string arrayVarName, int index) { System.Text.StringBuilder builder = new System.Text.StringBuilder(arrayVarName.Length + 10 + 2); return builder.Append(arrayVarName).Append('[').Append(index).Append(']').ToString(); } private static string InvariantConvertToString(T value) { return String.Format(CultureInfo.InvariantCulture, "{0}", value); } #endregion #region Delegates internal delegate string ToStringConverter (T value); #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Globalization; using System.Diagnostics; namespace System.Data.Common.Utils { // This class provides some useful string utilities, e.g., converting a // list to string. internal static class StringUtil { private const string s_defaultDelimiter = ", "; #region String Conversion - Unsorted ////// Converts an enumeration of values to a delimited string list. /// ///Type of elements to convert. /// Values. If null, returns empty string. /// Converter. If null, uses default invariant culture converter. /// Delimiter. If null, uses default (', ') ///Delimited list of values in string. internal static string BuildDelimitedList(IEnumerable values, ToStringConverter converter, string delimiter) { if (null == values) { return String.Empty; } if (null == converter) { converter = new ToStringConverter (InvariantConvertToString ); } if (null == delimiter) { delimiter = s_defaultDelimiter; } StringBuilder sb = new StringBuilder(); bool first = true; foreach (T value in values) { if (first) { first = false; } else { sb.Append(delimiter); } sb.Append(converter(value)); } return sb.ToString(); } // effects: Converts list to a string separated by a comma with // string.Empty used for null values internal static string ToCommaSeparatedString(IEnumerable list) { return ToSeparatedString(list, s_defaultDelimiter, string.Empty); } // effects: Converts list to a string separated by "separator" with // "nullValue" used for null values internal static string ToSeparatedString(IEnumerable list, string separator, string nullValue) { StringBuilder builder = new StringBuilder(); ToSeparatedString(builder, list, separator, nullValue); return builder.ToString(); } #endregion #region String Conversion - Sorted // effects: Converts the list to a list of strings, sorts its // and then converts to a string separated by a comma with // string.Empty used for null values internal static string ToCommaSeparatedStringSorted(IEnumerable list) { return ToSeparatedStringSorted(list, s_defaultDelimiter, string.Empty); } // effects: Converts the list to a list of strings, sorts its using // StringComparer.Ordinal // and then converts to a string separated by "separator" with // with "nullValue" used for null values internal static string ToSeparatedStringSorted(IEnumerable list, string separator, string nullValue) { StringBuilder builder = new StringBuilder(); ToSeparatedStringPrivate(builder, list, separator, nullValue, true); return builder.ToString(); } #endregion #region StringBuilder routines internal static string MembersToCommaSeparatedString(IEnumerable members) { StringBuilder builder = new StringBuilder(); builder.Append("{"); StringUtil.ToCommaSeparatedString(builder, members); builder.Append("}"); return builder.ToString(); } internal static void ToCommaSeparatedString(StringBuilder builder, IEnumerable list) { ToSeparatedStringPrivate(builder, list, s_defaultDelimiter, string.Empty, false); } internal static void ToCommaSeparatedStringSorted(StringBuilder builder, IEnumerable list) { ToSeparatedStringPrivate(builder, list, s_defaultDelimiter, string.Empty, true); } internal static void ToSeparatedString(StringBuilder builder, IEnumerable list, string separator) { ToSeparatedStringPrivate(builder, list, separator, string.Empty, false); } internal static void ToSeparatedStringSorted(StringBuilder builder, IEnumerable list, string separator) { ToSeparatedStringPrivate(builder, list, separator, string.Empty, true); } // effects: Modifies stringBuilder to contain a string of values from list // separated by "separator" with "nullValue" used for null values internal static void ToSeparatedString(StringBuilder stringBuilder, IEnumerable list, string separator, string nullValue) { ToSeparatedStringPrivate(stringBuilder, list, separator, nullValue, false); } // effects: Converts the list to a list of strings, sorts its (if // toSort is true) and then converts to a string separated by // "separator" with "nullValue" used for null values. private static void ToSeparatedStringPrivate(StringBuilder stringBuilder, IEnumerable list, string separator, string nullValue, bool toSort) { if (null == list) { return; } bool isFirst = true; // Get the list of strings first List elementStrings = new List (); foreach (object element in list) { string str; // Get the element or its default null value if (element == null) { str = nullValue; } else { str = FormatInvariant("{0}", element); } elementStrings.Add(str); } if (toSort == true) { // Sort the list elementStrings.Sort(StringComparer.Ordinal); } // Now add the strings to the stringBuilder foreach (string str in elementStrings) { if (false == isFirst) { stringBuilder.Append(separator); } stringBuilder.Append(str); isFirst = false; } } #endregion #region Some Helper routines /// /// This private static method checks a string to make sure that it is not empty. /// Comparing with String.Empty is not sufficient since a string with nothing /// but white space isn't considered "empty" by that rationale. /// internal static bool IsNullOrEmptyOrWhiteSpace(string value) { return IsNullOrEmptyOrWhiteSpace(value, 0); } internal static bool IsNullOrEmptyOrWhiteSpace(string value, int offset) { // don't use Trim(), which will copy the string, which may be large, just to test for emptyness //return String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim()); if (null != value) { for(int i = offset; i < value.Length; ++i) { if (!Char.IsWhiteSpace(value[i])) { return false; } } } return true; } // separate implementation from IsNullOrEmptyOrWhiteSpace(string, int) because that one will // pick up the jit optimization to avoid boundary checks and the this won't is unknown (most likely not) [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] // referenced by System.Data.Entity.Design.dll internal static bool IsNullOrEmptyOrWhiteSpace(string value, int offset, int length) { // don't use Trim(), which will copy the string, which may be large, just to test for emptyness //return String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim()); if (null != value) { length = Math.Min(value.Length, length); for(int i = offset; i < length; ++i) { if (!Char.IsWhiteSpace(value[i])) { return false; } } } return true; } internal static string FormatInvariant(string format, params object[] args) { Debug.Assert(args.Length > 0, "Formatting utilities must be called with at least one argument"); return String.Format(CultureInfo.InvariantCulture, format, args); } // effects: Formats args according to the format string and adds it // to builder. Returns the modified builder internal static StringBuilder FormatStringBuilder(StringBuilder builder, string format, params object[] args) { Debug.Assert(args.Length > 0, "Formatting utilities must be called with at least one argument"); builder.AppendFormat(CultureInfo.InvariantCulture, format, args); return builder; } // effects: Generates a new line and then indents the new line by // indent steps in builder -- indent steps are determined internally // by this method. Returns the modified builder internal static StringBuilder IndentNewLine(StringBuilder builder, int indent) { builder.AppendLine(); for (int i = 0; i < indent; i++) { builder.Append(" "); } return builder; } // effects: returns a string of the form 'arrayVarName[index]' internal static string FormatIndex(string arrayVarName, int index) { System.Text.StringBuilder builder = new System.Text.StringBuilder(arrayVarName.Length + 10 + 2); return builder.Append(arrayVarName).Append('[').Append(index).Append(']').ToString(); } private static string InvariantConvertToString(T value) { return String.Format(CultureInfo.InvariantCulture, "{0}", value); } #endregion #region Delegates internal delegate string ToStringConverter (T value); #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TraceHandler.cs
- WbemException.cs
- CLRBindingWorker.cs
- metadatamappinghashervisitor.cs
- MatrixTransform.cs
- InvariantComparer.cs
- RequestSecurityTokenResponse.cs
- PrimaryKeyTypeConverter.cs
- NativeCompoundFileAPIs.cs
- XslTransform.cs
- BackStopAuthenticationModule.cs
- BlurEffect.cs
- DbMetaDataColumnNames.cs
- TrackingAnnotationCollection.cs
- DocumentProperties.cs
- LineInfo.cs
- CSharpCodeProvider.cs
- HttpRawResponse.cs
- WsdlBuildProvider.cs
- InvalidProgramException.cs
- HwndTarget.cs
- PtsContext.cs
- LocatorPart.cs
- TransactionFlowOption.cs
- _SslStream.cs
- HTTPNotFoundHandler.cs
- ValuePattern.cs
- UndoManager.cs
- SafeCryptoKeyHandle.cs
- SiteMapDataSource.cs
- Registry.cs
- OLEDB_Util.cs
- SecurityKeyIdentifier.cs
- Label.cs
- SqlClientWrapperSmiStreamChars.cs
- Pointer.cs
- EnumerableRowCollectionExtensions.cs
- OpenTypeCommon.cs
- CompareValidator.cs
- TextBoxLine.cs
- ColorConvertedBitmap.cs
- InputReport.cs
- TraceUtility.cs
- ChannelSinkStacks.cs
- DrawingGroup.cs
- BaseCAMarshaler.cs
- RefreshPropertiesAttribute.cs
- Dispatcher.cs
- ReaderWriterLock.cs
- SessionState.cs
- LinkAreaEditor.cs
- RIPEMD160.cs
- BuildResult.cs
- AliasedSlot.cs
- CipherData.cs
- TreeViewBindingsEditorForm.cs
- RegisteredExpandoAttribute.cs
- DetailsViewRowCollection.cs
- CompensationTokenData.cs
- CallbackWrapper.cs
- PreDigestedSignedInfo.cs
- RenderContext.cs
- LocalizableAttribute.cs
- TypedMessageConverter.cs
- objectquery_tresulttype.cs
- Transform3DGroup.cs
- figurelengthconverter.cs
- IERequestCache.cs
- PointConverter.cs
- COMException.cs
- FacetEnabledSchemaElement.cs
- WmlControlAdapter.cs
- TemplateBindingExtensionConverter.cs
- SettingsPropertyNotFoundException.cs
- ComponentResourceManager.cs
- SpeechSynthesizer.cs
- hwndwrapper.cs
- ToolStripGripRenderEventArgs.cs
- BitmapScalingModeValidation.cs
- TransactionInformation.cs
- bindurihelper.cs
- PasswordBoxAutomationPeer.cs
- SoapExtension.cs
- Dynamic.cs
- ECDiffieHellmanPublicKey.cs
- ContentPresenter.cs
- ConstantCheck.cs
- PathData.cs
- IUnknownConstantAttribute.cs
- ReaderContextStackData.cs
- QuotedStringFormatReader.cs
- AsyncResult.cs
- TypeUtil.cs
- SingleSelectRootGridEntry.cs
- CacheMemory.cs
- WebPartMenuStyle.cs
- LinqDataSourceInsertEventArgs.cs
- DuplexChannelBinder.cs
- HijriCalendar.cs
- _ConnectionGroup.cs