如何在C#中为字符串添加字符

时间:2017-06-21 22:02:47

标签: c#

问题:我想在手机中添加字符。

所以我没有显示### - ### - ####,而是要显示(###)### - ####。

我尝试了以下内容:

string x = "Phone_Number";
string y = x.Remove(0,2);//removes the "1-"

从这里开始,我不确定如何在###

周围添加“()”

任何帮助都将不胜感激。

4 个答案:

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