Format Phone Number
///////////////////////////////////////////////////////////////////////////////////////////////
//
// 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]?\d\d?)\.(?<Second>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Third>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Fourth>2[0-4]\d|25[0-5]|[01]?\d\d?)"))
{
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;
}
}
}
Related examples in the same category