Определенно regex:
string CleanPhone(string phone)
{
Regex digitsOnly = new Regex(@"[^\d]");
return digitsOnly.Replace(phone, "");
}
или в классе, чтобы не воссоздавать regex все время:
private static Regex digitsOnly = new Regex(@"[^\d]");
public static string CleanPhone(string phone)
{
return digitsOnly.Replace(phone, "");
}
В зависимости от Ваших реальных исходных данных, можно хотеть, чтобы некоторая дополнительная логика там сделала вещи как полоса, ведущая 1 (для большого расстояния) или что-либо запаздывающее x или X (для расширений).
Можно сделать это легко с regex:
string subject = "(913)-444-5555";
string result = Regex.Replace(subject, "[^0-9]", ""); // result = "9134445555"
Используя методы Regex в.NET необходимо смочь соответствовать любой нечисловой цифре с помощью \D, как так:
phoneNumber = Regex.Replace(phoneNumber, "\D", "");
попробуйте это
public static string cleanPhone(string inVal)
{
char[] newPhon = new char[inVal.Length];
int i = 0;
foreach (char c in inVal)
if (c.CompareTo('0') > 0 && c.CompareTo('9') < 0)
newPhon[i++] = c;
return newPhon.ToString();
}
Я уверен, что существует более эффективный способ сделать это, но я, вероятно, сделал бы это:
string getTenDigitNumber(string input)
{
StringBuilder sb = new StringBuilder();
for(int i - 0; i < input.Length; i++)
{
int junk;
if(int.TryParse(input[i], ref junk))
sb.Append(input[i]);
}
return sb.ToString();
}