본문 바로가기

카테고리 없음

[Flutter.241125] JSON 속 정수를 원화 금액으로 표현하는 함수 만들기

사용할 JSON 파일이 있다. 여기에서 각각의 데이터 항목 'price'는 '20000' 이런 식으로 정수로 들어가 있다.

 

앱 화면에 "20000 원" 이렇게 써 있으면 너무 어색하고, 올바르지 않다. 원화 표기 기준에 맞춰서 "20,000 원" 이렇게 표현되어야 마음이 놓인다. 

 

이런 경우에 사용할 간단한 함수를 만들었다. 컴마로 자릿수 구분하지 않는 나라에서는 컴마 자리에 온점..(이름 맞나..?)을 넣어주면 될 것 같다. 

 

String wonCurrency(int price) {
  return "${price.toString().replaceAllMapped(
        RegExp(r'(\d)(?=(\d{3})+(?!\d))'),
        (match) => '${match[1]},',
      )} 원";
}

 

단위로 '원'도 붙여 주었다. 

 

replaceAllMapped는 Flutter 안의 String Method로, 특정 패턴을 만족하는 대상에 대해서 변환을 수행한다. 

https://api.flutter.dev/flutter/dart-core/String/replaceAllMapped.html

 

replaceAllMapped method - String class - dart:core library - Dart API

replaceAllMapped abstract method String replaceAllMapped( Pattern from, String replace( Match match ) ) Replace all substrings that match from by a computed string. Creates a new string in which the non-overlapping substrings that match from (the ones iter

api.flutter.dev

 

이렇게 금액 표현을 알아서 해 주는 라이브러리도 있다.

https://pub.dev/packages/intl

 

intl | Dart package

Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.

pub.dev

 

다양한 국가별 통화로 앱을 서비스 한다면 바로 써야겠지만, 지금 만드는 앱에서는 원화만 표시하기 때문에, 이렇게 작성해 봤다.

 

정규식은 너무 어렵다. 살려줘요.

 

-끝-