.format
문자열 의 메서드 를 사용하려고 합니다. 그러나 문자열에 % 1, % 2 등을 넣으면 혼란스러운 Java 소스 코드 조각을 가리키는 java.util.UnknownFormatConversionException이 발생합니다.
private void checkText(String s) {
int idx;
// If there are any '%' in the given string, we got a bad format
// specifier.
if ((idx = s.indexOf('%')) != -1) {
char c = (idx > s.length() - 2 ? '%' : s.charAt(idx + 1));
throw new UnknownFormatConversionException(String.valueOf(c));
}
}
이것으로부터 나는 %
숯이 금지 된다는 것을 이해합니다 . 그렇다면 인수 자리 표시 자에 무엇을 사용해야합니까?
스칼라 2.8을 사용 합니다.
답변
이전의 모든 응답은 정확하지만 모두 Java로되어 있습니다. 스칼라 예제는 다음과 같습니다.
val placeholder = "Hello %s, isn't %s cool?"
val formatted = placeholder.format("Ivan", "Scala")
또한 파이썬 연산자 처럼 유용하게 만드는format
%
것에 대한 블로그 게시물 이 있습니다.
답변
위치를 나타 내기 위해 숫자를 사용할 필요는 없습니다. 기본적으로 인수의 위치는 단순히 문자열에 나타나는 순서입니다.
이것을 사용하는 올바른 방법의 예는 다음과 같습니다.
String result = String.format("The format method is %s!", "great");
// result now equals "The format method is great!".
%
메소드는 문자열을 표시하는 방법을 알려주기 위해 항상 뒤에 다른 문자를 사용합니다. %s
아마도 가장 일반적 일 것입니다. 인수가 문자열로 취급되어야한다는 것을 의미합니다.
모든 옵션을 나열하지는 않지만 몇 가지 예를 제시하여 아이디어를 제공합니다.
// we can specify the # of decimals we want to show for a floating point:
String result = String.format("10 / 3 = %.2f", 10.0 / 3.0);
// result now equals "10 / 3 = 3.33"
// we can add commas to long numbers:
result = String.format("Today we processed %,d transactions.", 1000000);
// result now equals "Today we processed 1,000,000 transactions."
String.format
옵션 만 사용 java.util.Formatter
하려면 Formatter javadocs를 볼 수 있습니다 .
BalusC에서 언급했듯이 필요한 경우 기본 인수 순서를 변경할 수있는 설명서를 볼 수 있습니다. 그러나 아마도 당신이 이것을 원할 때 / 같은 시간을 두 번 이상 사용하는 경우 일 것입니다.
답변
소스 코드를 보지 않고 javadoc String.format () 및 Formatter 구문을 읽어야 합니다 .
% 뒤에 값의 형식을 지정합니다. 예를 들어 십진 정수의 경우는 d
이고 문자열의 경우 다음과 s
같습니다.
String aString = "world";
int aInt = 20;
String.format("Hello, %s on line %d", aString, aInt );
산출:
Hello, world on line 20
시도한 것을 수행하려면 (인수 색인 사용) 다음을 사용하십시오 *n*$
.
String.format("Line:%2$d. Value:%1$s. Result: Hello %1$s at line %2$d", aString, aInt );
산출:
Line:20. Value:world. Result: Hello world at line 20
답변
이것을 사용할 수 있습니다.
String.format("%1$s %2$s %2$s %3$s", "a", "b", "c");
산출:
abbc
답변
또한 Scala는 Predef에서 가져온 WrappedString으로의 암시 적 변환을 통해 여러 가지 방법으로 String을 확장하므로 다음을 수행 할 수도 있습니다.
val formattedString = "Hello %s, isn't %s cool?".format("Ivan", "Scala")
답변
공식 참조는 클래스 Formatter
입니다.
답변
스칼라 2.10
val name = "Ivan"
val weather = "sunny"
s"Hello $name, it's $weather today!"