kotlin 문자열 템플릿의 형식
Kotlin은 문자열 템플릿이라는 뛰어난 기능을 가지고 있습니다. 정말 좋아합니다.
val i = 10
val s = "i = $i" // evaluates to "i = 10"
그러나 템플릿에서 서식을 지정할 수 있습니까? 예를 들어 kotlin의 문자열 템플릿에서 Double 형식을 지정하고 최소한 소수점 구분 기호 뒤에 숫자를 설정하고 싶습니다.
val pi = 3.14159265358979323
val s = "pi = $pi??" // How to make it "pi = 3.14"?
불행히도 문자열 템플릿의 서식을 기본적으로 지원하지는 않지만 해결 방법으로 다음과 같은 것을 사용할 수 있습니다.
"pi = ${pi.format(2)}"
.format(n)
기능 당신은 자신을 정의해야합니다 것
fun Double.format(digits: Int) = java.lang.String.format("%.${digits}f", this)
현재 Kotlin에서 누락 된 기능이 분명히 있습니다.이를 수정하겠습니다.
이 문제를 해결 코 틀린 다음 stdlib 기능이 멋진 방식으로 사용하고 자바의 문자열 형식과 완전히 호환 될 수있다 (이것은 자바의 주변 단지 래퍼 String.format()
)
Kotlin의 설명서를 참조하십시오
코드는 다음과 같습니다.
val pi = 3.14159265358979323
val s = "pi = %.2f".format(pi)
Kotlin의 String 클래스에는 현재 내부적으로 Java 메소드를 사용 하는 형식 함수가 있습니다 String.format
.
/**
* Uses this string as a format string and returns a string obtained by substituting the specified arguments,
* using the default locale.
*/
@kotlin.internal.InlineOnly
public inline fun String.Companion.format(format: String, vararg args: Any?): String = java.lang.String.format(format, *args)
용법
val pi = 3.14159265358979323
val formatted = String.format("%.2f", pi) ;
println(formatted)
>>3.14
간단합니다.
val str:String = "%.2f".format(3.14159)
내부적으로 호출 String.format
하는 확장 함수 ( here 참조 ) 이므로 유연성이 더 필요한 경우 java.lang.String.format
Java의 DecimalFormat을 사용하여 자체 확장 함수를 작성할 수 있습니다 .
fun Double.format(fracDigits: Int): String {
val df = DecimalFormat()
df.setMaximumFractionDigits(fracDigits)
return df.format(this)
}
println(3.14159.format(2)) // 3.14
받아 보십시오 . 처음 n 개의 요소가 포함 된 목록을 반환합니다.
val pi = 3.14159265358979323
val s = pi.take(4)
그러나 rekire가 말한 컬렉션에 관한 것입니다 . 아래 의견에서 나를 정중하게 수정했습니다.
문자열로 변환하고 take를 사용하여 Double로 다시 변환 할 수 있습니다.
val a = 3.14159265358979323
val b = a.toString().take(4).toDouble()
최선의 아이디어는 아니지만 작동합니다.
참고 URL : https://stackoverflow.com/questions/23086291/format-in-kotlin-string-templates
'Programing' 카테고리의 다른 글
한 요청에 대한 HTTP 헤더 설정 (0) | 2020.06.05 |
---|---|
상향식과 하향식의 차이점은 무엇입니까? (0) | 2020.06.05 |
커맨드 라인에서 mysql 원격 데이터베이스에 액세스 (0) | 2020.06.05 |
유형 힌트를 사용할 때 null 인수를 전달할 수 없습니다 (0) | 2020.06.05 |
Android 디자인 지원 라이브러리 확장 가능 부동 작업 버튼 (FAB) 메뉴 (0) | 2020.06.05 |