Java文字列変換
1. 概要
このクイック記事では、StringオブジェクトをJavaでサポートされているさまざまなデータ型に簡単に変換する方法について説明します。
2. StringをintまたはIntegerに変換しています
StringをプリミティブintまたはIntegerラッパータイプに変換する必要がある場合は、 parseInt()またはのいずれかを使用できます。 ] valueOf()対応する intまたはIntegerの戻り値を取得するAPI:
@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. StringをlongまたはLongに変換する
StringをプリミティブlongまたはLongラッパータイプに変換する必要がある場合は、 parseLong()またはvalueOfを使用できます。 ()それぞれ:
@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. StringをdoubleまたはDoubleに変換する
StringをプリミティブdoubleまたはDoubleラッパータイプに変換する必要がある場合は、 parseDouble()または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. StringをByteArrayに変換しています
String をバイト配列に変換するために、 getBytes()は、プラットフォームのデフォルトの文字セットを使用して String をバイトのシーケンスにエンコードし、結果をに格納します。新しいバイト配列。
渡されたStringがデフォルトの文字セットを使用してエンコードできない場合、 getBytes()の動作は指定されていません。 java documentation に従い、エンコードプロセスをさらに制御する必要がある場合は、java.nio.charset.CharsetEncoderクラスを使用する必要があります。
@Test
public void whenConvertedToByteArr_thenCorrect() {
String beforeConvStr = "abc";
byte[] afterConvByteArr = new byte[] { 'a', 'b', 'c' };
assertEquals(Arrays.equals(beforeConvStr.getBytes(), afterConvByteArr), true);
}
6. StringをCharArrayに変換しています
StringをCharArrayインスタンスに変換するには、 toCharArray()を使用するだけです。
@Test
public void whenConvertedToCharArr_thenCorrect() {
String beforeConvStr = "hello";
char[] afterConvCharArr = { 'h', 'e', 'l', 'l', 'o' };
assertEquals(Arrays.equals(beforeConvStr.toCharArray(), afterConvCharArr), true);
}
7. StringをbooleanまたはBooleanに変換する
StringインスタンスをプリミティブbooleanまたはBooleanラッパータイプに変換するには、 parseBoolean()または valueOf()を使用できます。 それぞれの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. StringをDateまたはLocalDateTimeに変換しています
Java 6は、日付を表すためのjava.util.Dateデータ型を提供します。 Java 8では、DateおよびTimeに新しいAPIが導入され、古いjava.util.Dateおよびjava.util.Calendarの欠点に対処しています。 ]。
詳細については、thisの記事をご覧ください。
8.1. Stringをjava.util.Dateに変換しています
StringオブジェクトをDateオブジェクトに変換するには、最初に、日付と時刻の形式を表すパターンを渡してSimpleDateFormatオブジェクトを作成する必要があります。
たとえば、patternの可能な値は、「MM-dd-yyyy」または「yyyy-MM-dd」です。 次に、Stringを渡してparseメソッドを呼び出す必要があります。
引数として渡されるStringは、パターンと同じ形式である必要があります。 そうしないと、実行時にParseExceptionがスローされます。
@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. Stringをjava.time.LocalDateTimeに変換しています
LocalDateTime は、時刻を表す不変の日時オブジェクトであり、多くの場合、年-月-日-時-分-秒と見なされます。
StringオブジェクトをLocalDateTimeオブジェクトに変換するには、 parseAPIを使用するだけです。
@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);
}
The 弦に従って有効な時間を表す必要があります java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME
たとえば、「2011-12-03」は、年を4桁、月を2桁、日を2桁の有効な文字列形式を表します。
9. 結論
このクイックチュートリアルでは、S tringオブジェクトをJavaでサポートされているさまざまなデータ型に変換するためのさまざまなユーティリティメソッドについて説明しました。
この記事の完全なソースコードとすべてのコードスニペットは、GitHubでから入手できます。