2017-06-21 102 views
3

問題:我想添加字符到手機。如何添加字符到C#中的字符串

因此,而不是顯示### - ### - ####,我想顯示(###)### - ####。

我試過如下:

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

從這裏,我不知道我怎麼會添加 「()」,圍繞###

任何幫助,將不勝感激。

+0

是否使用了屏蔽的編輯?這是用於Win Forms,Web還是WPF?有一些控件可以自動完成格式化,所以不需要這種代碼太過挑剔。 – Arjang

+0

https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask(v=vs.110).aspx – Arjang

回答

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, "("); 
+0

'substring(0-3)'? – NetMage

+0

很快輸入了答案..然後在2分鐘後進來,並清除了任何錯別字..那是其中之一。 –

1

要將字符串插入特定位置,可以使用Insert函數。

下面是一個例子:

string phone = "111-222-8765"; 
phone = phone.Insert(0, "("); // (111-222-8765 
phone = phone.Insert(3, ")"); // (111)-222-8765 
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]}"; 
+1

[「現在你有兩個問題。」](https://blog.codinghorror.com/regular-expressions-now-you-have-two-problems/):) – Corey

+0

這是完全正確的。 – NetMage

0

如果連字符的位置不固定,您還可以搜索第一個連字符並使用它來格式化數字:

var index = x.IndexOf("-"); 
var res = string.Format("({0}) {1}", x.Substring(0, index), x.Substring(index + 1)); 
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);