다음과 같이 일반적인 strings.xml 리소스 파일에 문자열이 정의되어 있습니다.
<string name="hello_world"> HELLO</string>
아래와 같은 형식 문자열을 정의 할 수 있습니까?
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
strings.xml 리소스 파일에서
특수 문자를 이스케이프하려고했지만 작동하지 않습니다.
다음과 같이 일반적인 strings.xml 리소스 파일에 문자열이 정의되어 있습니다.
<string name="hello_world"> HELLO</string>
아래와 같은 형식 문자열을 정의 할 수 있습니까?
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
strings.xml 리소스 파일에서
특수 문자를 이스케이프하려고했지만 작동하지 않습니다.
답변:
formatted="false"XML에서 사용할 필요는 없습니다 . 짧은 버전 (예 : 또는 )이 아닌 정규화 된 문자열 형식 마커 %[POSITION]$[TYPE](여기서 [POSITION]특성 위치 [TYPE]는 변수 유형 임) 만 사용하면 됩니다.%s%d
안드로이드 문서 에서 인용 : 문자열 형식화 및 스타일링 :
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>이 예제에서 형식 문자열에는 두 개의 인수
%1$s가 있습니다. 문자열이고%2$d10 진수입니다. 다음과 같이 애플리케이션의 인수로 문자열을 형식화 할 수 있습니다.Resources res = getResources(); String text = res.getString(R.string.welcome_messages, username, mailCount);
formatted="false"문자열 리소스에 추가해야 합니다
여기에 예가 있습니다
당신의 strings.xml:
<string name="all" formatted="false">Amount: %.2f%n for %d days</string>
귀하의 코드에서 :
yourTextView.setText(String.format(getString(R.string.all), 3.12, 2));
formatted="false"문자열이 형식화되지 않았 음을 암시 하기 때문에 일부와 혼동 될 수 있습니다 . 다른 솔루션을 게시했습니다 stackoverflow.com/a/20887690/228429
String.format(getString(R.string.all), 3.12, 2)이 방법을 단순화 할 수 있습니다 getString(R.string.all, 3.12, 2).
25%Android가 중단됩니다.
내부 파일은 strings.xml다음과 같은 문자열 리소스를 정의합니다.
<string name="string_to_format">Amount: %1$f for %2$d days%3$s</string>
코드 내에서 (Context에서 상속한다고 가정) 간단히 다음을 수행하십시오.
String formattedString = getString(R.string.string_to_format, floatVar, decimalVar, stringVar);
LocalPCGuy 또는 Giovanny Farto M 의 답변과 비교 하여 String.format 메서드는 필요하지 않습니다.
안드로이드 문서 에서 인용 :
을 사용하여 문자열을 형식화해야하는 경우 문자열
String.format(String, Object...)인수에 형식 인수를 넣어서 수행 할 수 있습니다. 예를 들어 다음 리소스를 사용하십시오.<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>이 예제에서 형식 문자열에는 두 개의 인수
%1$s가 있습니다. 문자열과%2$d10 진수입니다. 다음과 같이 애플리케이션의 인수로 문자열을 형식화 할 수 있습니다.Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
나를 위해 Kotlin에서 다음과 같이 작동했습니다.
내 string.xml
<string name="price" formatted="false">Price:U$ %.2f%n</string>
내 수업 .kt
var formatPrice: CharSequence? = null
var unitPrice = 9990
formatPrice = String.format(context.getString(R.string.price), unitPrice/100.0)
Log.d("Double_CharSequence", "$formatPrice")
D / Double_CharSequence : 가격 : U $ 99,90