====== Java String Format ====== ===== String.format() ===== * [[https://dzone.com/articles/java-string-format-examples|Java String Format Examples]] ===== Slf4j MessageFormatter ===== * [[https://www.slf4j.org/api/org/slf4j/helpers/MessageFormatter.html|Slf4j MessageFormatter]] * [[java:slf4j|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 ===== * [[http://docs.oracle.com/javase/6/docs/api/java/text/MessageFormat.html|java.text.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 ===== * [[https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/StrSubstitutor.html|StrSubstitutor (Apache Commons Lang)]] * ''$'' escape -> ''$$'' // 시스템 프라퍼티 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.