사용자 도구

사이트 도구


java:string_format

Java String Format

String.format()

Slf4j MessageFormatter

  • Slf4j의 log message formatter를 사용할 수 있다. 사용법이 매우 간단하다.
  • {}가 formatting anchor 이며, 이 부분이 파라미터 문자열로 대체된다.
  • Java의 MessageFormat보다 10배 정도 빠르다고 한다.
import org.slf4j.helpers.MessageFormatter;
 
// sf의 뜻? simple format, slf4j format, ...
// 주의: "{}"와 실제 인자 갯수가 달라도 오류 없이 지나간다.
public static String sf(String messagePattern, Object... args) {
    return MessageFormatter.arrayFormat(messagePattern, args).getMessage();
}
 
// 위 sf 메소드를 static import 하여 사용한다.
 
String message = sf("Hello {}", "world!");

포맷팅 예제

sf("Set {1,2,3} is not equal to {}.", "1,2");
->  "Set {1,2,3} is not equal to 1,2."

// { 에대 한 escape 은 \\{
sf("Set \\{} is not equal to {}.", "1,2");
-> "Set {} is not equal to 1,2."

// \ 자체를 사용하려면 \\\\
sf("File name is C:\\\\{}.", "file.zip");
-> "File name is C:\file.zip"

MessageFormat

 int planet = 7;
 String event = "a disturbance in the Force";
 
 String result = MessageFormat.format(
     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
     planet, new Date(), event);
 
// 결과
 At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.

org.apache.commons.lang.text.StrSubstitutor

// 시스템 프라퍼티
StrSubstitutor.replaceSystemProperties(
    "You are running with java.version = ${java.version} and os.name = ${os.name}.");
 
// 일반적인 사용법
Map valuesMap = HashMap();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}.";
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);
 
// 결과
The quick brown fox jumped over the lazy dog.
java/string_format.txt · 마지막으로 수정됨: 2019/02/22 20:27 저자 kwon37xi