Conversiones de cadenas de Java

1. Información general

En este artículo rápido, exploraremos algunas conversiones simples de objetos String a diferentes tipos de datos compatibles con Java.

2. Conversión de String a int o Integer

Si necesitamos para convertir una cadena a primitivo int o Entero tipo de envoltura, podemos utilizar el parseInt () o valueOf () API para obtener el correspondiente int o Entero valor de retorno:

@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. Conversión de cadena a larga o larga

Si necesitamos convertir una cadena a un tipo de envoltura largo primitivo o largo , podemos usar parseLong () o valueOf () respectivamente:

@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. Conversión de cadena en doble o doble

Si necesitamos convertir una cadena a un tipo primitivo de envoltura doble o doble , podemos usar parseDouble () o valueOf () respectivamente:

@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. Conversión de cadena en ByteArray

Para convertir una cadena en una matriz de bytes, getBytes () codifica la cadena en una secuencia de bytes utilizando el juego de caracteres predeterminado de la plataforma, almacenando el resultado en una nueva matriz de bytes.

El comportamiento de getBytes () no se especifica cuando la cadena pasada no se puede codificar utilizando el juego de caracteres predeterminado. Según la documentación de java, la clase java.nio.charset.CharsetEncoder debe usarse cuando se requiere más control sobre el proceso de codificación:

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

6. Conversión de cadena a CharArray

Para convertir una cadena en una instancia de CharArray , simplemente podemos usar toCharArray () :

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

7. Conversión de cadenas a booleanas o booleanas

Para convertir una cadena de ejemplo para primitivo boolean o Boolean tipo envoltura, podemos utilizar parseBoolean () o valueOf () API respectivamente:

@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. Conversión de cadena a fecha o localDateTime

Java 6 proporciona el tipo de datos java.util.Date para representar fechas. Java 8 introdujo nuevas API para fecha y hora para abordar las deficiencias de los antiguos java.util.Date y java.util.Calendar .

Puede leer este artículo para obtener más detalles.

8.1. Conversión de cadena en java.util.Date

Para convertir objetos String en objetos Date , primero debemos construir un objeto SimpleDateFormat pasando el patrón que describe el formato de fecha y hora.

Por ejemplo, un posible valor para el patrón podría ser "MM-dd-aaaa" o "aaaa-MM-dd". A continuación, necesitamos invocar el método parse pasando el String .

La cadena que se pasa como argumento debe tener el mismo formato que el patrón. De lo contrario, se lanzará una ParseException en tiempo de ejecución:

@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. Conversión de cadena a java.time.LocalDateTime

LocalDateTime es un objeto de fecha y hora inmutable que representa una hora, a menudo vista como año-mes-día-hora-minuto-segundo.

Para convertir objetos String en objetos LocalDateTime , simplemente podemos usar la API de análisis :

@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 cadena debe representar una hora válida según java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. De lo contrario, se lanzará una ParseException en tiempo de ejecución.

Por ejemplo, ' 2011-12-03 ' representa un formato de cadena válido que tiene 4 dígitos para el año, 2 dígitos para el mes para un año y 2 dígitos para el día del mes.

9. Conclusión

En este tutorial rápido, hemos cubierto diferentes métodos de utilidad para convertir objetos S tring a diferentes tipos de datos compatibles con java.

El código fuente completo y todos los fragmentos de código de este artículo están disponibles en GitHub.