[Java] Supprimer le nombre spécifié de caractères à la fin de StringBuilder

introduction

~~ Je pensais qu'il avait été préparé par la méthode standard de StringBuilder, mais je ne pouvais pas le trouver quelle que soit la façon dont je cherchais, alors je l'ai fait moi-même. ~~ ↑ C'était une description trompeuse ...

Je me suis demandé s'il y avait une méthode spécialisée pour effacer le nombre spécifié de caractères à la fin, mais je ne l'ai pas trouvée quand je l'ai recherchée, alors je l'ai faite moi-même. est.

Environnement de contrôle de fonctionnement

Exemple de code source ①

public class Demo {
    public static void main(String[] args) {
    	StringBuilder sb = new StringBuilder("hoge");

        //Supprimer un caractère de la fin
    	sb.setLength(sb.length()-1);

        //Résultat d'exécution: porc
    	System.out.println(sb);
    }
}

setlengthDéfinit la longueur de la chaîne de séquence.

length()Renvoie la longueur actuelle de la chaîne. Dans l'exemple ci-dessus, 4 est renvoyé. Il ne vous reste plus qu'à soustraire le nombre de caractères que vous souhaitez supprimer de `` length () ''.

Notez que si vous spécifiez une longueur de chaîne inférieure à 0, vous obtiendrez une erreur `` java.lang.StringIndexOutOfBoundsException ''.

StringBuilder sb = new StringBuilder("hoge");
sb.setLength(sb.length()-5);
//Erreur: java.lang.StringIndexOutOfBoundsException: String index out of range: -1

setlengthAvant de fairestringbuilderIl peut être préférable de vérifier la longueur de.

//Si n caractères ou plus, supprimez n caractères à la fin
if (sb.length() >= n) {
	sb.setLength(sb.length()-n);
}

Exemple de code source ②

delete(int start, int end)Est la façon d'utiliser. Je vous l'ai dit dans les commentaires.

Je l'ai d'abord inventé, mais j'ai pensé qu'il était nécessaire de spécifier à la fois la position de départ et la position de fin, et la lisibilité était faible, alors je l'ai rejetée. length()Je pensais que j'avais besoin d'écrire deux fois ...

En premier lieu, si vous avez length () dans une variable, vous ne devez l'écrire qu'une seule fois! Ce n'est pas une mauvaise lisibilité! J'ai pensé à nouveau. Si vous avez le mot supprimer, il est facile de comprendre que vous souhaitez supprimer le caractère.

StringBuilder sb = new StringBuilder("hoge");

int n = 2;              //Nombre de caractères que vous souhaitez supprimer à la fin
int size = sb.length(); // length()Dans une variable de type int

//Suppression de la phrase de deux lettres à la fin
sb.delete(size-n, size);

//Résultat d'exécution: ho
System.out.println(sb);

Les notes sont identiques à l'exemple de code source ①, elles sont donc omises.

Exemple de code source ③

deletecharat(int index)Est la façon d'utiliser. Je vous l'ai également dit dans les commentaires.

Dans ce cas, vous ne pouvez ** supprimer qu'un seul caractère à la fin **. Veuillez noter que vous ne pouvez pas supprimer plusieurs caractères à la fin **.

Cependant, je pense qu'il est (personnellement) plus lisible que les deux exemples de codes source ci-dessus. Je montrais brillamment la documentation officielle, mais je ne pouvais pas du tout la remarquer. Je vais donc le mentionner dans le commandement.

StringBuilder sb = new StringBuilder("hoge");

//Supprimer un caractère de la fin
sb.deleteCharAt(sb.length()-1);

//Résultat d'exécution: porc
System.out.println(sb);

À la fin

Veuillez me faire savoir s'il existe une meilleure mise en œuvre.

Les références

StringBuilder (Java Platform SE 8)

Recommended Posts

[Java] Supprimer le nombre spécifié de caractères à la fin de StringBuilder
[Java] Vérifiez le nombre d'occurrences de caractères
[Java] Supprimer les éléments de la liste
En Java, je souhaite couper plusieurs caractères spécifiés uniquement du début et de la fin.
Comment écrire Scala du point de vue de Java
Langage Java du point de vue de Kotlin et C #
Un programme qui compte le nombre de mots dans une liste
Agréger le nombre de personnes tous les 10 ans à partir de la liste <Personne>
[Java] Supprimer le nombre spécifié de caractères à la fin de StringBuilder
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
Java fin du mois plusMonths
Commande pour vérifier le nombre et l'état des threads Java
Comptez le nombre de chiffres après la virgule décimale en Java
Agréger le nombre de personnes tous les 10 ans à partir de la liste <Personne>
Méthode pour additionner le nombre d'années et obtenir la fin du mois
De Java naissant (3 ans) à Node.js (4 ans). Et l'impression de retourner à Java
J'ai essayé de résumer les méthodes de Java String et StringBuilder
[Swift] La couleur de NavigationBar est différente (plus claire) de la couleur spécifiée.
Résumons la grammaire Java 8 du point de vue des ingénieurs iOS
La route de JavaScript à Java
L'origine des expressions Java lambda
Augmenter dynamiquement le nombre d'éléments dans un tableau bidimensionnel Java (tableau multidimensionnel)
[Servlet Java] La route de Senri est aussi la cinquième étape d'une étape
L'histoire de l'acquisition de Java Silver en deux mois de totalement inexpérimenté.
À partir de Java9, les constructeurs de classe correspondant aux types primitifs sont marqués comme obsolètes.
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
[Java] Récupère MimeType à partir du contenu du fichier avec Apathce Tika [Kotlin]
Obtenez le résultat de POST en Java
Vérifiez le contenu du magasin de certificats Java
Examiner l'utilisation de la mémoire des éléments Java
[Java] Obtenez le jour d'un jour spécifique
Mémo: [Java] Vérifiez le contenu du répertoire
Kick ShellScript sur le serveur depuis Java
Accédez à l'API REST Salesforce depuis Java
Comparer les éléments d'un tableau (Java)
Comment déterminer le nombre de parallèles
L'histoire de RxJava souffrant de NoSuchElementException
[jour: 5] J'ai résumé les bases de Java
Quelles sont les fonctionnalités mises à jour de Java 13
Mesurez facilement la taille des objets Java
Retour sur les bases de Java
Supprime après le caractère spécifié de la chaîne de caractères
Sortie du livre "Introduction à Java"
À propos du nombre de threads de Completable Future
L'histoire de l'écriture de Java dans Emacs
Trouvez la différence à partir d'un multiple de 10
[Java] [Spring] Tester le comportement de l'enregistreur
[Promotion de la compréhension de Ruby (1)] Lorsque vous passez de Java à Ruby, commencez par comprendre la différence.
Incrémenté du troisième argument de la méthode iterate de la classe Stream ajoutée depuis Java9
[Java] Calculer le jour à partir de la date (ne pas utiliser la classe Calendar)