더북(TheBook)

039.2 파싱

파싱은 포매팅 과정의 반대다. 문자열이 주어지면 수로 파싱한다. NumberFormat.parse() 메서드를 사용하면 된다. 기본적으로 파싱에서는 분류(grouping)를 쓰지 않는다(예를 들어 분류하지 않으면 5,50K5로 파싱되고, 분류하면 5,50K550000으로 파싱한다).

이 정보를 헬퍼 메서드 집합에 다음과 같이 모아 넣을 수 있다.

public static Number parseLocale(Locale locale, String number)
    throws ParseException {
  return parse(locale, Style.SHORT, false, number);
}

public static Number parseLocaleStyle(
  Locale locale, Style style, String number) throws ParseException {

  return parse(locale, style, false, number);
}

public static Number parseLocaleStyleRound(
  Locale locale, Style style, boolean grouping, String number)
    throws ParseException {

  return parse(locale, style, grouping, number);
}

private static Number parse(
  Locale locale, Style style, boolean grouping, String number)
    throws ParseException {

  if (locale == null || style == null || number == null) {
    throw new IllegalArgumentException(
      "Locale/style/number cannot be null");
  }

  NumberFormat nf = NumberFormat.getCompactNumberInstance(locale, style);
  nf.setGroupingUsed(grouping);

  return nf.parse(number);
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.