Tradutor de número de telefone c # Alpha
Tenho uma tarefa de casa em que o programa aceita qualquer número de telefone no formato semelhante ao 555-GET-FOOD. A tarefa é mapear as letras alfabéticas para números e converter o número em seu equivalente numérico.
Por exemplo: A, B, C = 2; D, E, F = 3; etc ...
Nós não cobrimos Classes ou criamos mapas neste momento, portanto, essas não seriam soluções viáveis. Este capítulo aborda a enumeração, por isso estou trabalhando para resolver usando um tipo enumerado. Eu tenho um método configurado para validar os dados (verifique se o número correto de caracteres e os hífens estão no lugar correto) e isso funciona corretamente. Eu tenho outro método configurado para remover os hífens e também usa o método ToUpper () e isso também funciona corretamente, portanto, o loop foreach que eu configurei usando o número após a conclusão desses dois métodos.
Também configurei um método para executar após a conversão para adicionar os hífens novamente e isso também funciona.
Eu tentei várias maneiras de conseguir é trabalhar e os deixei comentando sobre a chance de que eles possam ser o que eu preciso usar; para minha tentativa com a instrução switch, apenas configurei com a letra A por enquanto e planejo terminar as letras restantes, se eu conseguir fazer isso funcionar. Eu acho que o que meus problemas são o loop foreach está usando um tipo de char e o switch está usando um int. Parece ser o mesmo problema ao tentar o código dentro do loop foreach, mas não tenho certeza de como corrigir, para que todas as sugestões sejam apreciadas.
public enum AlphaNumber
{
A=2, B=2, C=2, D=3, E=3, F=3, G=4, H=4, I=4, J=5, K=5, L=5,
M=6, N=6, O=6, P=7, Q=7, R=7, S=8, T=8, U=8, V=9, W=9, X=9, Y=9, Z=9
}
private void UpdatePhone(AlphaNumber phone)
{
switch (phone)
{
case AlphaNumber.A:
//return AlphaNumber.(int[])Enum.GetValues(typeof(AlphaNumber));
//return (Enum.GetValues(typeof(AlphaNumber)));
// (int)ValueType;
Enum.GetValues(typeof(AlphaNumber));
break;
}
private void translateButton_Click(object sender, EventArgs e)
{
numberLabel.Text = "";//Clear the numberLabel
//Get a trimmed copy of the user's input.
string input = numberTextBox.Text.Trim();
if (IsValidFormat(input))
{
Unformat(ref input);
foreach (char ch in input)
{
if (char.IsLetter(ch))// {
ch = (char)Enums.AlphaNumber.Active;
//ch = (char)Enum.GetValues(typeof(AlphaNumber));
//ch = Enum.TryParse(AlphaNumber);
// ch = AlphaNumber.(int[])Enum.GetValues(typeof(AlphaNumber));
//UpdatePhone(ch);
MessageBox.Show("Character is char"); }
}
TelephoneFormat(ref input);
numberLabel.Text = input;
Estou aberto a sugestões e agradecemos qualquer ajuda fornecida. Onde eu preciso de ajuda está dentro do loop foreach, estou analisando cada valor e, se for uma letra, quero obter o valor dos valores enum e substituir o caracter pelo valor numérico.