Comment remplacer remplacer les voyelles par un caractère spécial en Java?
public class ReplaceVowels {
public static void main(String args[]) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the String:");
String str = bf.readLine();
char[] c = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
if (c[i] == 'a' || c[i] == 'e' || c[i] == 'i' || c[i] == 'o'
|| c[i] == 'u') {
System.out.println(str.replace(c[i], '?'));
}
}
}
}
pourquoi le str.replace
méthode ne fonctionne pas? Que dois-je faire pour le faire fonctionner?
Vous devez vous connecter pour publier un commentaire.
Dans votre code, vous êtes en train de créer un nouveau tableau de caractères, qui est la même longueur que votre chaîne, mais vous n'êtes pas à l'initialisation du tableau avec toutes les valeurs.
Au lieu de cela, essayez:
Cependant, ce n'est pas la meilleure manière de faire ce que vous essayez de faire. Vous n'avez pas besoin d'un tableau de caractères ou une instruction if pour remplacer des caractères dans une chaîne de caractères:
La
replace
fonction remplace toutes (et tous) les caractères qu'il trouve, ou il ne fera rien, si ce personnage n'existe pas dans la chaîne.Vous pouvez aussi rechercher dans l'aide de les expressions régulières (comme l'a fait remarquer dans edwga de réponse), de sorte que vous pouvez raccourcir ces 5 appels de fonction en un seul:
str.replace
ne pas modifier le texte original, il sera de retour nouveau/séparé avec un contenu modifié. Vous signifiait probablementstr = str.replace(...)
.Honnêtement, cette solution est relativement peu pratique. Vous devez utiliser la str.replaceAll() la méthode la place.
Ce que ce n'est qu'il utilise l'expression régulière "[aeiou]" et le remplace par un caractère spécial ("?"). Regex est un sujet compliqué, mais celui-ci détecte chaque instance d'une voyelle.
Vous pouvez en lire plus à propos de Regex à http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html
(?i)
en regex pour le faire insensible à la casse comme"(?i)[aeiou]"
Toutes les réponses ci-dessus fonctionne .
Juste en ajoutant certains cas, la sensibilité pour capturer les voyelles majuscules(à l'Aide du Scanner de Classe)