Conversions de chaînes Java

Conversions de chaînes Java

1. Vue d'ensemble

Dans cet article rapide, nous allons explorer quelques conversions simples des objetsString en différents types de données pris en charge par Java.

2. Conversion deString enint ouInteger

Si nous avons besoin de convertir unString en type de wrapper primitifint ouInteger, nous pouvons utiliser les APIparseInt() ouvalueOf() pour obtenir leint ouInteger valeur de retour:

@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 deString enlong ouLong

Si nous devons convertir un type d'encapsulationString en primitiflong ouLong, nous pouvons utiliser respectivementparseLong() ouvalueOf():

@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 deString endouble ouDouble

Si nous devons convertir un type d'encapsulationString en primitifdouble ouDouble, nous pouvons utiliser respectivementparseDouble() ouvalueOf():

@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 deString enByteArray

Pour convertir unString en tableau d’octets,getBytes() encode lesString 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 degetBytes() n'est pas spécifié lorsque lesString transmis ne peuvent pas être codés à l'aide du jeu de caractères par défaut. Selon les javadocumentation, la classejava.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 deString enCharArray

Afin de convertir unString en une instanceCharArray, nous pouvons simplement utilisertoCharArray():

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

    assertEquals(Arrays.equals(beforeConvStr.toCharArray(), afterConvCharArr), true);
}

7. Conversion deString enboolean ouBoolean

Pour convertir une instanceString en type de wrapper primitifboolean ouBoolean, nous pouvons utiliser respectivement les APIparseBoolean() ouvalueOf():

@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 deString enDate ouLocalDateTime

Java 6 fournit le type de donnéesjava.util.Date pour représenter les dates. Java 8 a introduit de nouvelles API pourDate etTime afin de combler les lacunes des anciensjava.util.Date etjava.util.Calendar.

Vous pouvez lire l'article dethis pour plus de détails.

8.1. Conversion deString enjava.util.Date

Afin de convertir les objetsString en objetsDate, nous devons d'abord construire un objetSimpleDateFormat en passant le modèle décrivant le format de la date et de l'heure.

Par exemple, une valeur possible pour motif pourrait être «MM-jj-aaaa» ou «aaaa-MM-jj». Ensuite, nous devons invoquer la méthodeparse en passant lesString.

LesString passés en argument doivent être au même format que le modèle. Sinon, unParseException sera lancé à 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 deString enjava.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 objetsLocalDateTime, nous pouvons simplement utiliser l'APIparse:

@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);
}

LesString doivent représenter un temps valide selonjava.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. Sinon, unParseException sera lancé à l'exécution.

[.s2]#For example ‘2011-12-03‘ represents a valid string format having 4 digits for the year, 2 digits for the month for a year and 2 digits for the day of the month #.

9. Conclusion

Dans ce rapide didacticiel, nous avons couvert différentes méthodes utilitaires pour convertir des objets Stringen 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 disponiblesover on GitHub.