在编辑器中键入时以美国 Phone 数字格式格式化数字
Format number in US Phone number format while typing in the Editor
有一个 phone 数字文本框,它的格式必须类似于美国 phone 数字格式。
如果输入单个字符,假设是 9
在这种情况下应该显示为9
接下来输入 8,应该显示为 98
输入下一个 9,应该显示为 989-
输入下一个 1 应该显示为 989-1
同样应该格式化 10 位数字。
格式:###-###-####
我得到了一些帮助,但它是在完成 10 位数字的输入后用于格式化的。使用 Regex 格式和 ToString() 格式。
public static string formatPhoneNumber(string phoneNum, string phoneFormat)
{
//phoneNum = " 12";
if (phoneFormat == "")
{
// If phone format is empty, code will use default format (###) ###-####
phoneFormat = "###-###-####";
}
// First, remove everything except of numbers
Regex regexObj = new Regex(@"[^\d]");
phoneNum = regexObj.Replace(phoneNum, "");
// Second, format numbers to phone string
if (phoneNum.Length > 0)
{
phoneNum = Convert.ToInt64(phoneNum).ToString(phoneFormat);
}
return phoneNum;
}
使用文本更改事件并在每次文本更改时调用此方法来格式化文本。
private string PhoneNumberFormatter(string value)
{
value = new Regex(@"\D").Replace(value, string.Empty);
if (value.Length > 3 & value.Length < 7)
{
value = string.Format("{0}-{1}", value.Substring(0, 3), value.Substring(3, value.Length - 3));
return value;
}
if (value.Length > 6 & value.Length < 11)
{
value = string.Format("{0}-{1}-{2}", value.Substring(0, 3), value.Substring(3, 3), value.Substring(6));
return value;
}
if (value.Length > 10)
{
value = value.Remove(value.Length - 1, 1);
value = string.Format("{0}-{1}-{2}", value.Substring(0, 3), value.Substring(3, 3), value.Substring(6));
return value;
}
return value;
}
通过上面的方法,我的要求达到了,如果有什么优化的方法请告诉我。
有一个 phone 数字文本框,它的格式必须类似于美国 phone 数字格式。
如果输入单个字符,假设是 9
在这种情况下应该显示为9
接下来输入 8,应该显示为 98
输入下一个 9,应该显示为 989-
输入下一个 1 应该显示为 989-1
同样应该格式化 10 位数字。
格式:###-###-####
我得到了一些帮助,但它是在完成 10 位数字的输入后用于格式化的。使用 Regex 格式和 ToString() 格式。
public static string formatPhoneNumber(string phoneNum, string phoneFormat)
{
//phoneNum = " 12";
if (phoneFormat == "")
{
// If phone format is empty, code will use default format (###) ###-####
phoneFormat = "###-###-####";
}
// First, remove everything except of numbers
Regex regexObj = new Regex(@"[^\d]");
phoneNum = regexObj.Replace(phoneNum, "");
// Second, format numbers to phone string
if (phoneNum.Length > 0)
{
phoneNum = Convert.ToInt64(phoneNum).ToString(phoneFormat);
}
return phoneNum;
}
使用文本更改事件并在每次文本更改时调用此方法来格式化文本。
private string PhoneNumberFormatter(string value)
{
value = new Regex(@"\D").Replace(value, string.Empty);
if (value.Length > 3 & value.Length < 7)
{
value = string.Format("{0}-{1}", value.Substring(0, 3), value.Substring(3, value.Length - 3));
return value;
}
if (value.Length > 6 & value.Length < 11)
{
value = string.Format("{0}-{1}-{2}", value.Substring(0, 3), value.Substring(3, 3), value.Substring(6));
return value;
}
if (value.Length > 10)
{
value = value.Remove(value.Length - 1, 1);
value = string.Format("{0}-{1}-{2}", value.Substring(0, 3), value.Substring(3, 3), value.Substring(6));
return value;
}
return value;
}
通过上面的方法,我的要求达到了,如果有什么优化的方法请告诉我。