Correct façon de couper une chaîne de caractères en Java
En Java, je fais cela de découper une chaîne de caractères:
String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.trim();
System.out.println("after->>"+input+"<<-");
De sortie est:
before->> some Thing <<-
after->>some Thing<<-
Œuvres. Mais je me demande si par l'affectation d'une variable à lui-même, je suis en train de faire la bonne chose. Je ne veux pas gaspiller les ressources par la création d'une autre variable et de l'affectation de la parés de la valeur. Je voudrais effectuer la garniture en place.
Donc je fais ce droit?
- Se soucier de la consommation de ressources par une autre variable est presque toujours de la micro-optimisation de toute façon. C'est le genre de chose qui pourrait faire un 0.0001% de différence dans l'utilisation des ressources, mais seulement si il ya quelque chose de mal avec l'optimisation du compilateur.
Vous devez vous connecter pour publier un commentaire.
Vous êtes en train de faire. De la documentation:
Aussi de la la documentation:
Comme chaînes de caractères en Java sont des objets immuables, il n'existe aucun moyen pour exécuter la coupe de la place. La seule chose que vous pouvez faire pour découper la chaîne est de créer la nouvelle version découpée de votre chaîne et de le retourner (et c'est ce que le
trim()
méthode n').En théorie, vous n'êtes pas l'affectation d'une variable à lui-même. Vous affectez la valeur renvoyée par la méthode trim() à votre variable d'entrée.
Dans la pratique trim() la méthode de la mise en œuvre est optimisé de sorte qu'il est en train de créer (et de retour) une autre variable uniquement lorsque nécessaire. Dans d'autres cas (quand il n'y a effectivement pas besoin de garniture) c'est de retourner une référence à la chaîne d'origine (dans ce cas, vous êtes réellement l'affectation d'une variable à lui-même).
Voir http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.trim%28%29
De toute façon trim() ne modifie pas la chaîne d'origine, de sorte que ce est la bonne façon de l'utiliser.
L'approche traditionnelle consiste à utiliser la méthode trim inline...par exemple:
Si c'est une chaîne qui doit être coupé pour tous les usages, de l'assiette à l'avant comme vous l'avez fait. Ré-utiliser le même emplacement de mémoire comme vous l'avez fait n'est pas une mauvaise idée, si vous voulez communiquer votre intention à d'autres développeurs. Lorsque l'on écrit en Java, gestion mémoire n'est pas le principal problème, puisque le "cadeau" de Java, c'est que vous n'avez pas besoin de le gérer.
Oui, mais il y aura toujours deux objets jusqu'à ce que le garbage collector supprime la valeur d'origine qui d'entrée a été pointant vers. Chaînes de caractères en Java sont immuables. Voici une bonne explication: L'immuabilité de Chaînes de caractères en Java.
String::strip…
L'ancien
String::trim
méthode a un étrange définition de les espaces.Comme discuté ici, Java 11 ajoute de nouvelles
bande de...
méthodes pour laString
classe. Ces utiliser un plus Unicode définition des espaces. Voir les règles de cette définition dans la JavaDoc de la classe pourCaractère::isWhitespace
.Exemple de code.
Ou vous pouvez bande juste le premier ou juste la fin espaces.
Si nous avons de découper une Chaîne de caractères sans l'aide de trim(), split() les méthodes de Java, alors, suivant le code source peut être utile.
La java string trim() supprime attaque et de fuite des espaces
sortie