/////////////////////////////////////////////////////////////////////////////////////////////// // // This File is Part of the CallButler Open Source PBX (http://www.codeplex.com/callbutler // // Copyright (c) 2005-2008, Jim Heising // 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 Jim Heising 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 THE COPYRIGHT OWNER 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.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; using System.Xml; namespace WOSI.Utilities { public class StringUtils { /// <summary> /// Determines whether the supplied <paramref name="number"/> is an integer. /// </summary> /// <param name="number">The object to check.</param> /// <returns> /// <see lang="true"/> if the supplied <paramref name="number"/> is an integer. /// </returns> public static bool IsInteger(object number) { return (number is Int32 || number is Int16 || number is Int64 || number is UInt32 || number is UInt16 || number is UInt64 || number is Byte || number is SByte); } /// <summary> /// Determines whether the supplied <paramref name="number"/> is a decimal number. /// </summary> /// <param name="number">The object to check.</param> /// <returns> /// <see lang="true"/> if the supplied <paramref name="number"/> is a decimal number. /// </returns> public static bool IsDecimal(object number) { return (number is Single || number is Double || number is Decimal); } /// <summary> /// Determines whether the supplied <paramref name="number"/> is of numeric type. /// </summary> /// <param name="number">The object to check.</param> /// <returns> /// <c>true</c> if the specified object is of numeric type; otherwise, <c>false</c>. /// </returns> public static bool IsNumber(object number) { return (IsInteger(number) || IsDecimal(number)); } public static string FormatPhoneNumber(string inputString) { string outputNumber = ""; string numberString = ""; // Remove any spaces //inputString = inputString.Replace(" ", ""); // Get number count int numberCount = 0; foreach (Char numberChar in inputString) { if (Char.IsNumber(numberChar)) { numberCount++; numberString += numberChar.ToString(); } } if (Regex.IsMatch(inputString, @"(?<First>2[0-4]d|25[0-5]|[01]?dd?).(?<Second>2[0-4]d|25[0-5]|[01]?dd?).(?<Third>2[0-4]d|25[0-5]|[01]?dd?).(?<Fourth>2[0-4]d|25[0-5]|[01]?dd?)")) { outputNumber = inputString; } else if (numberCount == 7) { outputNumber = numberString.Substring(0, 3) + "-" + numberString.Substring(3, 4); } else if (numberCount == 10) { outputNumber = "(" + numberString.Substring(0, 3) + ") " + numberString.Substring(3, 3) + "-" + numberString.Substring(6, 4); } else if (numberCount == 11) { outputNumber = numberString.Substring(0, 1) + " (" + numberString.Substring(1, 3) + ") " + numberString.Substring(4, 3) + "-" + numberString.Substring(7, 4); } else outputNumber = inputString; return outputNumber; } } }