如何在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, "("); 

要在特定位置插入字符串,可以使用“ Insertfunction。

这是一个例子:

 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);