La fin de la chaîne de caractères en Java
J'étais à résoudre une question facile :
Supprimer certains caractères d'un tableau de caractères en Java , l'idée est simple :
static void remove_char(char[] arr, char c){
int r = 0;
for (int i = 0 ; i < arr.length ; i++){
if (arr[i] == c){
r++;
continue;
}
arr[i - r] = arr[i];
}
arr[arr.length - r] = 'static void remove_char(char[] arr, char c){
int r = 0;
for (int i = 0 ; i < arr.length ; i++){
if (arr[i] == c){
r++;
continue;
}
arr[i - r] = arr[i];
}
arr[arr.length - r] = '\0'; //??
return;
}
'; //??
return;
}
Je veux mettre un ending character
qui signale que le reste de la matrice ne doit pas être considéré comme lorsque l'on veut, par exemple, générer une chaîne à l'aide de new String(arr)
Est-il un tel personnage en Java ? ( Je suppose que dans C
c'est \0
mais je ne suis pas sûr)
Par exemple lorsque nous appelons :
System.out.println(new String(remove_char(new char[] {'s','a','l','a','m'} , 'a')))
ce sera imprimée : slm m
Alors que je veux obtenir slm
et je veux faire ce in-place
pas à l'aide d'un nouveau tableau
- À l'aide de la classe StringBuilder hors de question? docs.oracle.com/javase/tutorial/java/data/buffers.html. Il n'a probablement pas vous aider à trouver une solution à ce bien. Il offre une solution.
- Comme je l'ai dit, je veux seulement manipuler le tableau , qui n'utilisent pas toute structure de données supplémentaires (c'est à dire
in-place
) - Constructeur String est une classe qui utilise un tableau de caractères pour la manipulation de chaînes.
Vous devez vous connecter pour publier un commentaire.
Java n'a pas de "marquer" la fin de la chaîne, comme le C ne. Il suit de longueur & des valeurs, il est donc possible d'avoir zéro-chars (
\0
) dans la chaîne. Si vous créez unString
à partir d'un tableau de char contenant\0
caractères, la résultante deString
contiennent ces caractères.Noter également, un tableau statique de taille ne peut pas être de taille moyenne, de sorte que vous aurez à suivre la "taille" de vous-même (la Chaîne constructeur ne chute pas indésirable caractères pour vous, à partir de la fin d'un tableau de char).
Envisager à l'aide de:
Un
StringBuilder
comme suggéré par Clyde Byrd III, ouString(char value[], int offset, int count)
; vous aurez à déterminer par programmation à ce que les valeurs appropriées pouroffset
etcount
serait. Peut-être la Chaîne de méthodes, telles quereplace
,concat
, ousubstring
pourrait aider.Tout d'abord, un
String
est pas unchar[]
. UnString
utilise unchar[]
, mais c'est tout.Ce que vous êtes suggérant est une coutume de l'interprétation d'un caractère spécial pour marquer le "échelle" d'un tableau de char, ce qui est bien si c'est le contrat que vous êtes la création de votre méthode.
Tous les personnages sont "valides" caractères en java, mais il y a unicode "non caractères" qui sont officiellement garantie de ne jamais être utilisé pour l'encodage des caractères:
\uFDD0
par\uFDEF
,\uFFFE
et\uFFFF
.Vous pouvez utiliser l'un de ces que votre "fin de la plage de" marqueur de caractère.