问题:我想添加字符到手机。如何添加字符到C#中的字符串
因此,而不是显示### - ### - ####,我想显示(###)### - ####。
我试过如下:
string x = "Phone_Number";
string y = x.Remove(0,2);//removes the "1-"
从这里,我不知道我怎么会添加 “()”,围绕###
任何帮助,将不胜感激。
问题:我想添加字符到手机。如何添加字符到C#中的字符串
因此,而不是显示### - ### - ####,我想显示(###)### - ####。
我试过如下:
string x = "Phone_Number";
string y = x.Remove(0,2);//removes the "1-"
从这里,我不知道我怎么会添加 “()”,围绕###
任何帮助,将不胜感激。
值得注意的是,字符串在C#中是不可变的。这意味着如果你尝试修改一个字符串,你总会得到一个新的字符串对象。
一条路线将转换为数字(如完整性检查),然后格式化字符串
var result = String.Format("{0:(###) ###-####}", double.Parse("8005551234"))
如果你不想做的双变换,那么你可以做这样的事情:
var result = String.Format("({0}) {1}-{2}", x.Substring(0 , 3), x.Substring(3, 3), x.Substring(6));
或者,如果你已经有连字符的地方,真的只是想在括号果酱,那么你可以做这样的事情:
var result = x.Insert(3, ")").Insert(0, "(");
'substring(0-3)'? – NetMage
很快输入了答案..然后在2分钟后进来,并清除了任何错别字..那是其中之一。 –
要将字符串插入特定位置,可以使用Insert
函数。
下面是一个例子:
string phone = "111-222-8765";
phone = phone.Insert(0, "("); // (111-222-8765
phone = phone.Insert(3, ")"); // (111)-222-8765
可以使用正则表达式来提取数字基(不管-
或(
),然后输出在所期望的格式:
var digitGroups = Regex.Matches(x, @"(\d{3})-?(\d{3})-?(\d{4})")[0].Groups.Cast<Group>().Skip(1).Select(g => g.Value).ToArray();
var ans = $"({digitGroups[0]}) {digitGroups[1]}-{digitGroups[2]}";
如果连字符的位置不固定,您还可以搜索第一个连字符并使用它来格式化数字:
var index = x.IndexOf("-");
var res = string.Format("({0}) {1}", x.Substring(0, index), x.Substring(index + 1));
我会做这样的事情:
string FormatPhoneNumber(string phoneNumber)
{
if (string.IsNullOrEmpty(phoneNumber))
throw new ArgumentNullException(nameof(phoneNumber));
var phoneParts = phoneNumber.Split('-');
if (phoneParts.Length < 3)
throw new ArgumentException("Something wrong with the input number format", nameof(phoneNumber));
var firstChar = phoneParts[0].First();
var lastChar = phoneParts[0].Last();
if (firstChar == '(' && lastChar == ')')
return phoneNumber;
else if (firstChar == '(')
return $"{phoneParts[0]})-{phoneParts[1]}-{phoneParts[2]}";
else if (lastChar == ')')
return $"({phoneParts[0]}-{phoneParts[1]}-{phoneParts[2]}";
return $"({phoneParts[0]})-{phoneParts[1]}-{phoneParts[2]}";
}
你会使用这样的:
string n = "123-123-1234";
var formattedPhoneNumber = FormatPhoneNumber(n);
是否使用了屏蔽的编辑?这是用于Win Forms,Web还是WPF?有一些控件可以自动完成格式化,所以不需要这种代码太过挑剔。 – Arjang
https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask(v=vs.110).aspx – Arjang