問題:我想添加字符到手機。如何添加字符到C#中的字符串
因此,而不是顯示### - ### - ####,我想顯示(###)### - ####。
我試過如下:
string x = "Phone_Number";
string y = x.Remove(0,2);//removes the "1-"
從這裏,我不知道我怎麼會添加 「()」,圍繞###
任何幫助,將不勝感激。
問題:我想添加字符到手機。如何添加字符到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, "(");
'substring(0-3)'? – NetMage
很快輸入了答案..然後在2分鐘後進來,並清除了任何錯別字..那是其中之一。 –
要將字符串插入特定位置,可以使用Insert
函數。
下面是一個例子:
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<Group>().Skip(1).Select(g => g.Value).ToArray();
var ans = $"({digitGroups[0]}) {digitGroups[1]}-{digitGroups[2]}";
如果連字符的位置不固定,您還可以搜索第一個連字符並使用它來格式化數字:
var index = x.IndexOf("-");
var res = string.Format("({0}) {1}", x.Substring(0, index), x.Substring(index + 1));
我會做這樣的事情:
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);
是否使用了屏蔽的編輯?這是用於Win Forms,Web還是WPF?有一些控件可以自動完成格式化,所以不需要這種代碼太過挑剔。 – Arjang
https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask(v=vs.110).aspx – Arjang