问题:我想在手机中添加字符。
所以我没有显示### - ### - ####,而是要显示(###)### - ####。
我尝试了以下内容:
string x = "Phone_Number";
string y = x.Remove(0,2);//removes the "1-"
从这里开始,我不确定如何在###
周围添加“()”任何帮助都将不胜感激。
答案 0 :(得分:5)
值得注意的是,字符串在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, "(");
答案 1 :(得分:1)
要在特定位置插入字符串,您可以使用std::string
函数。
以下是一个例子:
Insert
答案 2 :(得分:0)
您可以使用正则表达式提取数字组(无论-
还是(
),然后以您想要的格式输出:
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]}";
答案 3 :(得分:0)
我会做这样的事情:
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);