Conversions de chaîne Java

1. Vue d'ensemble

Dans cet article rapide, nous explorerons quelques conversions simples d' objets String en différents types de données pris en charge en Java.

2. Conversion chaîne à int ou Entier

Si nous devons convertir une chaîne en type d'encapsuleur primitif int ou Integer , nous pouvons utiliser les API parseInt () ou valueOf () pour obtenir la valeur de retour int ou Integer correspondante :

@Test public void whenConvertedToInt_thenCorrect() { String beforeConvStr = "1"; int afterConvInt = 1; assertEquals(Integer.parseInt(beforeConvStr), afterConvInt); } @Test public void whenConvertedToInteger_thenCorrect() { String beforeConvStr = "12"; Integer afterConvInteger = 12; assertEquals(Integer.valueOf(beforeConvStr).equals(afterConvInteger), true); }

3. Conversion de chaîne en long ou long

Si nous avons besoin de convertir une chaîne Primitive longue ou longue Wrapper, nous pouvons utiliser parseLong () ou valueOf () respectivement:

@Test public void whenConvertedTolong_thenCorrect() { String beforeConvStr = "12345"; long afterConvLongPrimitive = 12345; assertEquals(Long.parseLong(beforeConvStr), afterConvLongPrimitive); } @Test public void whenConvertedToLong_thenCorrect() { String beforeConvStr = "14567"; Long afterConvLong = 14567l; assertEquals(Long.valueOf(beforeConvStr).equals(afterConvLong), true); }

4. Conversion de chaîne en double ou double

Si nous devons convertir une chaîne en type primitif double ou double wrapper, nous pouvons utiliser respectivement parseDouble () ou valueOf () :

@Test public void whenConvertedTodouble_thenCorrect() { String beforeConvStr = "1.4"; double afterConvDoublePrimitive = 1.4; assertEquals(Double.parseDouble(beforeConvStr), afterConvDoublePrimitive, 0.0); } @Test public void whenConvertedToDouble_thenCorrect() { String beforeConvStr = "145.67"; double afterConvDouble = 145.67d; assertEquals(Double.valueOf(beforeConvStr).equals(afterConvDouble), true); }

5. Conversion de chaîne en ByteArray

Afin de convertir une chaîne en un tableau d'octets, getBytes () encode la chaîne en une séquence d'octets en utilisant le jeu de caractères par défaut de la plate-forme, en stockant le résultat dans un nouveau tableau d'octets.

Le comportement de getBytes () n'est pas spécifié lorsque la chaîne transmise ne peut pas être codée à l'aide du jeu de caractères par défaut. Selon la documentation java, la classe java.nio.charset.CharsetEncoder doit être utilisée lorsque plus de contrôle sur le processus de codage est requis:

@Test public void whenConvertedToByteArr_thenCorrect() { String beforeConvStr = "abc"; byte[] afterConvByteArr = new byte[] { 'a', 'b', 'c' }; assertEquals(Arrays.equals(beforeConvStr.getBytes(), afterConvByteArr), true); }

6. Conversion d'une chaîne en CharArray

Afin de convertir une chaîne en une instance CharArray , nous pouvons simplement utiliser toCharArray () :

@Test public void whenConvertedToCharArr_thenCorrect() { String beforeConvStr = "hello"; char[] afterConvCharArr = { 'h', 'e', 'l', 'l', 'o' }; assertEquals(Arrays.equals(beforeConvStr.toCharArray(), afterConvCharArr), true); }

7. Conversion de chaîne en booléen ou booléen

Pour convertir une chaîne instance Primitive booléenne ou booléenne de type d'emballage, on peut utiliser parseBoolean () ou valueOf () API respectivement:

@Test public void whenConvertedToboolean_thenCorrect() { String beforeConvStr = "true"; boolean afterConvBooleanPrimitive = true; assertEquals(Boolean.parseBoolean(beforeConvStr), afterConvBooleanPrimitive); } @Test public void whenConvertedToBoolean_thenCorrect() { String beforeConvStr = "true"; Boolean afterConvBoolean = true; assertEquals(Boolean.valueOf(beforeConvStr), afterConvBoolean); }

8. Conversion de chaîne en date ou en LocalDateTime

Java 6 fournit le type de données java.util.Date pour représenter les dates. Java 8 a introduit de nouvelles API pour la date et l' heure afin de remédier aux lacunes des anciens java.util.Date et java.util.Calendar .

Vous pouvez lire cet article pour plus de détails.

8.1. Conversion de String en java.util.Date

Afin de convertir des objets String en objets Date , nous devons d'abord construire un objet SimpleDateFormat en passant le modèle décrivant le format de la date et de l'heure.

Par exemple, une valeur possible pour le modèle pourrait être «MM-jj-aaaa» ou «aaaa-MM-jj». Ensuite, nous devons appeler la méthode d' analyse en passant la chaîne .

La chaîne passée en argument doit être au même format que le modèle. Sinon, une ParseException sera lancée lors de l'exécution:

@Test public void whenConvertedToDate_thenCorrect() throws ParseException { String beforeConvStr = "15/10/2013"; int afterConvCalendarDay = 15; int afterConvCalendarMonth = 9; int afterConvCalendarYear = 2013; SimpleDateFormat formatter = new SimpleDateFormat("dd/M/yyyy"); Date afterConvDate = formatter.parse(beforeConvStr); Calendar calendar = new GregorianCalendar(); calendar.setTime(afterConvDate); assertEquals(calendar.get(Calendar.DAY_OF_MONTH), afterConvCalendarDay); assertEquals(calendar.get(Calendar.MONTH), afterConvCalendarMonth); assertEquals(calendar.get(Calendar.YEAR), afterConvCalendarYear); }

8.2. Conversion de String en java.time.LocalDateTime

LocalDateTime est un objet date-heure immuable qui représente une heure, souvent considérée comme année-mois-jour-heure-minute-seconde.

Afin de convertir des objets String en objets LocalDateTime , nous pouvons simplement utiliser l' API d' analyse :

@Test public void whenConvertedToLocalDateTime_thenCorrect() { String str = "2007-12-03T10:15:30"; int afterConvCalendarDay = 03; Month afterConvCalendarMonth = Month.DECEMBER; int afterConvCalendarYear = 2007; LocalDateTime afterConvDate = new UseLocalDateTime().getLocalDateTimeUsingParseMethod(str); assertEquals(afterConvDate.getDayOfMonth(), afterConvCalendarDay); assertEquals(afterConvDate.getMonth(), afterConvCalendarMonth); assertEquals(afterConvDate.getYear(), afterConvCalendarYear); }

La chaîne doit représenter une heure valide selon java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. Sinon, une ParseException sera lancée lors de l'exécution.

Par exemple, « 2011-12-03 » représente un format de chaîne valide comportant 4 chiffres pour l'année, 2 chiffres pour le mois pour une année et 2 chiffres pour le jour du mois.

9. Conclusion

Dans ce rapide didacticiel, nous avons couvert différentes méthodes utilitaires pour convertir des objets S tring en différents types de données pris en charge dans java.

Le code source complet et tous les extraits de code de cet article sont disponibles à l'adresse over sur GitHub.