如何在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, "(");
要在特定位置插入字符串,可以使用“ Insert
function。
这是一个例子:
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().Skip(1).Select(g => g.Value).ToArray(); var ans = $"({digitGroups[0]}) {digitGroups[1]}-{digitGroups[2]}";
我会做这样的事情:
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);