Comment ignorer les caractères spéciaux et les espaces dans la chaîne?
J'ai donc développé ce code pour convertir un mot pour les numéros de téléphone et comment puis-je code de l'ignorer les espaces entré lors de l'affichage du résultat?
Donc ce que je voulais dire, c'est pour permettre à l'utilisateur d'entrer des espaces entre les mots, mais n'est pas reflété dans le résultat.
import java.util.Scanner;
{
public static void main (String[] args)
{
Scanner console = new Scanner(System.in);
{
System.out.println("Enter the a word to be converted : ");
String Letter = console.next ();
Letter = Letter.toUpperCase();
Letter = Letter.toLowerCase();
String Number="";
int count=0;
int i=0;
while(count < Letter.length())
{switch(Letter.charAt(i))
{case 'A':case 'B':case 'C': case 'a': case 'b': case 'c':
Number += "2";
count++;
break;
case 'D':case 'E':case 'F': case 'd': case 'e': case 'f':
Number += "3";
count++;
break;
case 'G':case 'H':case 'I': case 'g': case 'h': case 'i':
Number += "4";
count++;
break;
case 'J':case 'K':case 'L': case 'j': case 'k': case 'l':
Number += "5";
count++;
break;
case 'M':case 'N':case 'O': case 'm': case 'n': case 'o':
Number += "6";
count++;
break;
case 'P':case 'R':case 'S': case 'p': case 'r': case 's':
Number += "7";
count++;
break;
case 'T':case 'U':case 'V': case 't': case 'u': case 'v':
Number += "8";
count++;
break;
case 'W':case 'X':case 'Y':case 'Z': case 'w': case 'x': case 'y': case 'z':
Number += "9";
count++;
break;
}
if( count==3) {
Number += "-";
}
i++;
}
System.out.println( Number );
}
}}
- Devoirs?......
- Btw, Personnage.toUpperCase().. maintenant simplifier votre code.
- ajouter un cas de défaut et de ne rien faire dedans... mais si vous voulez que l'utilisateur ne doit pas entrer ensuite pour le tableau d'octets méthode de vérification ou d'une vérification par le caractère sage... Il serait plus facile à comprendre votre problème si vous avez dit à votre entrée et la sortie attendue
- Haha, je voulais juste de l'améliorer encore, les nouvelles de java. Aussi merci pour vos commentaires
- mon entrée attendue est de permettre à l'utilisateur d'utiliser des majuscules et des caractères ainsi que des espaces entre les mots.....sortie attendue est d'avoir le mot convertis en nombres, même si il y a des caractères spéciaux ou des espaces dans l'entrée.
- Souhaité mettre est [appeler à la maison] affichée [225-54663]
- mais dans mon dernier supplémentaires de code. quand je rentre [appeler à la maison]...le résultat est [225-5].
- parce que l'espace n'est pas trouvé dans la liste rép c'est pourquoi j'ai ajouté un octet de vérification dans mon code...
Vous devez vous connecter pour publier un commentaire.
Pour votre code
À ignorer les espaces, vous pouvez utiliser les éléments suivants:
Ce sera
trim
tous les espaces vides de la Chaîne. Voir Chaîne de caractères.trim() pour plus d'informations!.Et de vérifier si la Chaîne contient autre chose que les lettres que vous pouvez utiliser:
Si vous voulez de la vitesse, ou pour des raisons de simplicité, vous pouvez utiliser:
En utilisant par défaut dans votre commutateur cas, vous pouvez ignorer toutes les autres réponses.Donc, si le type y quelque chose qui n'est pas inclus dans votre commutateur de ne pas ajouter à votre compte ou le numéro.
Vous pouvez remplacer les caractères à partir de votre chaîne de caractères non-alphanumériques avec vide(
""
) et ensuite faire votre traitement à l'aide d'une chaîne. Vous pouvez utiliser Chaîne de caractères.replaceAll() méthode.Pour Par Exemple:
Une autre approche (je préfère ce): Voir réponse par @KeshavPandey
Si vous êtes en essayant de simuler un clavier numérique, alors vous devriez probablement utiliser la
blank space
et ajouter votre chaîne avec0
.La plupart des téléphones mobiles ont
blank space
sur le nombre0
clé.Le morceau de code suivant peut vous aider.
J'ai juste optimisé ton code ci-dessus. Vous pouvez remplacer les caractères avec des chiffres à l'aide de l'Api de chaînes au lieu d'itération de la chaîne caractère par caractère et de générer le nombre.
Si vous souhaitez insérer un "-" au bout de 3 chiffres, vous pouvez utiliser le morceau suivant du code après la au-dessus de la conversion.
Vous pouvez simplement ajouter une instruction case à cocher pour les caractères que vous voulez éviter. Alors, "ne rien faire" lorsqu'il est touché...
Dans votre cas, de vouloir juste sauter espaces, vous pouvez ajouter un cas supplémentaire spécifique pour le 'caractère', et/ou un cas de défaut;