Supprimer un caractère d'une chaine de caractère
Fermé
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
-
Modifié le 16 févr. 2021 à 17:48
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 16 févr. 2021 à 19:47
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 16 févr. 2021 à 19:47
A voir également:
- Supprimer un caractère d'une chaine de caractère
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Supprimer une page word - Guide
- Impossible de supprimer un fichier - Guide
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 févr. 2021 à 17:57
16 févr. 2021 à 17:57
Bonjour,
Déjà
Eventuellement ça aurait pu être
De manière générale, un String est immuable, c'est à dire qu'il ne peut pas être modifié.
Toute changement de valeur nécessite de recréer un nouveau String, le plus performant est donc de travailler directement sur le tableau de caractères qui compose un String.
Exemple :
Ce qui donne :
Déjà
replace("charAt(i)", "");c'est forcément faux.
Eventuellement ça aurait pu être
replace(charAt(i), "");mais sans les guillemets autour du charAt(i)
De manière générale, un String est immuable, c'est à dire qu'il ne peut pas être modifié.
Toute changement de valeur nécessite de recréer un nouveau String, le plus performant est donc de travailler directement sur le tableau de caractères qui compose un String.
Exemple :
package com.company; public class Main { public static String removeNthChar(String string, int n) { char[] chars = new char[string.length() - 1]; string.getChars(0, n, chars, 0); // copie des caractères avant n string.getChars(n + 1, string.length(), chars, n); // copie des caractères après n return new String(chars); } public static void main(String[] args) { String text = "0123456789"; for (int n = 0; n < text.length(); n++) { System.out.println(removeNthChar(text, n)); } } }
Ce qui donne :
123456789 // l'affichage de 0123456789 privé de son premier caractère (0) 023456789 // l'affichage de 0123456789 privé de son deuxième caractère (1) 013456789 012456789 012356789 012346789 012345789 012345689 012345679 012345678 // l'affichage de 0123456789 privé de son dernier caractère (9)
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
1
Modifié le 16 févr. 2021 à 18:26
Modifié le 16 févr. 2021 à 18:26
Bonjour,
J'avais également essayé avec
j'avais aussi commencé à implémenter ces méthodes pour travailler avec les tableaux:
mon but est de récupérer la partie non commune entre les deux mots, puis ensuite de comparer ce que j'ai récupéré avec une liste de mots (qui provient d'un fichier.txt).
finalement, dans cette situation, c'est quoi la meilleure option entre les tableaux et les String ? (sachant qu'ensuite, je devrais travailler avec des hashmap)
J'avais également essayé avec
replace(charAt(i), "");mais j'ai vu que ça ne marchait pas, du coup j'ai fini par tenter l'intentable...
j'avais aussi commencé à implémenter ces méthodes pour travailler avec les tableaux:
package com.company; import java.io.FileNotFoundException; public class Complementaire { static char[] stringToChar(String string){ char[] stringTab = new char[string.length()]; for (int i = 0; i < string.length(); i++) { stringTab[i] = string.charAt(i); } return stringTab; } static void printArray(char[] array){ for (char c: array) { System.out.println(c); } } //char[] complementaire = new char[ensemble.length()]; public static void main(String[] args) throws FileNotFoundException { char[] ensemble = stringToChar("chenille"); //printArray(ensemble); char[] mot = stringToChar("chien"); //printArray(mot); } }
mon but est de récupérer la partie non commune entre les deux mots, puis ensuite de comparer ce que j'ai récupéré avec une liste de mots (qui provient d'un fichier.txt).
finalement, dans cette situation, c'est quoi la meilleure option entre les tableaux et les String ? (sachant qu'ensuite, je devrais travailler avec des hashmap)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 févr. 2021 à 19:06
16 févr. 2021 à 19:06
Déjà, ta méthode stringToChar() existe déjà dans la classe String :
Ensuite, entre char[] et String il vaut mieux travailler avec les char[], parce que manipuler les String implique de recréer un objet à chaque modification, contrairement aux char[] que l'on peut modifier autant qu'on veut (tant que leur taille ne change pas).
Remarque : pour ton programme je t'invite à travailler sur des tableaux triés, c'est ce qu'il y a de plus efficace.
Il suffit ensuite de lire les lettres triées les unes après les autres comme tu avais fait pour la partie fusion du mergeSort.
char[] ensemble = "chenille".toCharArray(); char[] mot = "chien".toCharArray();
Ensuite, entre char[] et String il vaut mieux travailler avec les char[], parce que manipuler les String implique de recréer un objet à chaque modification, contrairement aux char[] que l'on peut modifier autant qu'on veut (tant que leur taille ne change pas).
Remarque : pour ton programme je t'invite à travailler sur des tableaux triés, c'est ce qu'il y a de plus efficace.
Il suffit ensuite de lire les lettres triées les unes après les autres comme tu avais fait pour la partie fusion du mergeSort.
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
1
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
16 févr. 2021 à 19:47
16 févr. 2021 à 19:47
effectivement, je me suis rendue compte trop tard que toCharArray() existait...
merci pour ton conseil, je vais essayer de mettre ça en place !
merci pour ton conseil, je vais essayer de mettre ça en place !