Konverzie reťazcov Java

1. Prehľad

V tomto rýchlom článku sa pozrieme na niekoľko jednoduchých konverzií String objekty rôznych typov údajov podporovaných v prostredí Java.

2. Konvertovanie String do int alebo Celé číslo

Ak potrebujeme previesť a String na primitívne int alebo Celé číslo typ obalu, môžeme použiť buď parseInt () alebo hodnota() API na získanie zodpovedajúcich int alebo Celé číslo návratová hodnota:

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

3. Konvertovanie String do dlho alebo Dlhé

Ak potrebujeme previesť a String na primitívne dlho alebo Dlhé typ obalu, môžeme použiť parseLong () alebo hodnota() respektíve:

@Test public void whenConvertedTolong_thenCorrect () {String beforeConvStr = "12345"; dlho 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. Konverzia String do dvojitý alebo Dvojitý

Ak potrebujeme previesť a String na primitívne dvojitý alebo Dvojitý typ obalu, môžeme použiť parseDouble () alebo hodnota() respektíve:

@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. Konverzia String do ByteArray

Za účelom prevodu a String na bajtové pole, getBytes () kóduje String do postupnosti bajtov pomocou predvolenej znakovej sady platformy a výsledok sa uloží do nového bajtového poľa.

Správanie getBytes () je nešpecifikované, keď prešlo String nie je možné kódovať pomocou predvolenej znakovej sady. Podľa dokumentácie java by sa mala trieda java.nio.charset.CharsetEncoder použiť, keď sa vyžaduje väčšia kontrola nad procesom kódovania:

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

6. Konvertovanie String do CharArray

Za účelom prevodu a String do a CharArray napríklad môžeme jednoducho použiť toCharArray ():

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

7. Konverzia String do boolovský alebo Boolovský

Ak chcete previesť String príklad na primitívne boolovský alebo Boolovský typ obalu, môžeme použiť parseBoolean () alebo hodnota() Rozhrania API:

@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. Konvertovanie String do Dátum alebo LocalDateTime

Java 6 poskytuje java.util.Date dátový typ na reprezentáciu dátumov. Java 8 predstavila nové API pre Windows Dátum a Čas na riešenie nedostatkov starších java.util.Date a java.util.Calendar.

Viac podrobností si môžete prečítať v tomto článku.

8.1. Prevádza String do java.util.Date

Za účelom prevodu String predmety do Dátum objekty, musíme najskôr zostrojiť a SimpleDateFormat objekt odovzdaním vzoru popisujúceho formát dátumu a času.

Možná hodnota pre vzor môže byť napríklad „MM-dd-rrrr“ alebo „rrrr-MM-dd“. Ďalej sa musíme dovolať analyzovať metóda prechádzajúca String.

The String odovzdané ako argument by mali byť v rovnakom formáte ako vzor. Inak a ParseException bude vyhodené za behu:

@Test public void whenConvertedToDate_thenCorrect () hodí ParseException {String beforeConvStr = "15/10/2013"; int afterConvCalendarDay = 15; int afterConvCalendarMonth = 9; int afterConvCalendarYear = 2013; SimpleDateFormat formatter = nový SimpleDateFormat ("dd / M / rrrr"); Dátum afterConvDate = formatter.parse (beforeConvStr); Kalendár kalendár = nový 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. Prevádza String do java.time.LocalDateTime

LocalDateTime je nemenný objekt dátumu a času, ktorý predstavuje čas, ktorý sa často považuje za rok-mesiac-deň-hodinu-minútu-sekundu.

Aby bolo možné previesť reťazcové objekty na LocalDateTime objekty, môžeme jednoducho použiť analyzovať API:

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

The String musí predstavovať platný čas podľa java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. Inak a ParseException bude vyhodený za behu.

Napríklad '2011-12-03„Predstavuje platný formát reťazca, ktorý má 4 číslice pre rok, 2 číslice pre mesiac pre rok a 2 číslice pre deň v mesiaci.

9. Záver

V tomto rýchlom výučbe sme sa zaoberali rôznymi užitočnými metódami na prevod String objekty na rôzne dátové typy podporované v jave.

Kompletný zdrojový kód a všetky útržky kódu pre tento článok sú k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found