"UnknownFormatConversionException : Conversion = End of String"
위와 같은 오류를 보셨다면 저와 비슷한 경우가 아닐까 생각이 듭니다..
사실 한번 당했던 오류인데 시간이 지나 똑같은 실수를 해서 이참에 글로 남깁니다.
1. 원인
String.format() 메서드를 사용할 때 정수형(%d), 문자열(%s), 부동 소수점(%f)과 같이
약속된 형식 변환 문자가 사용되어야 합니다.
이를 벗어나서 알 수 없는 형식 변환 문자가 보이면 오류가 발생합니다.
아래와 같이 String.format()을 사용했다고 예를 들어봅니다.
val percentage = 80
Log.d("TEST", String.format("%d %", percentage))
Log.d("TEST", String.format("%d %", percentage))
"80 %"가 출력될 것이라고 기대했지만 마지막 "%"를 알 수 없는 형식 변환 문자로 판단하고
UnknownFormatConversionException 오류가 발생합니다.
2. 해결 방법
"%" 같은 경우는 "%%"를 사용하거나 또는 형식 변환 문자(%s)를 사용하는 것도 방법이 될 것 같습니다.
val percentage = 80
Log.d("TEST", String.format("%d %%", percentage)) // 80 %
Log.d("TEST", String.format("%s", "$percentage %")) // 80 %
Log.d("TEST", String.format("%d %%", percentage)) // 80 %
Log.d("TEST", String.format("%s", "$percentage %")) // 80 %
음 사실 이게 제일 깔끔할 것 같기도 하네요 ㅎㅎ
Log.d("TEST", "$percentage %") // 80 %
개인적으로 그냥 한마디로 정리하면
String.format()을 사용해야 한다면 "%" 사용을 조심합시다...!
0 comments: