From e2ff771baa47ba85066055101525162b1dc49c3b Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Sat, 11 Aug 2012 08:56:21 -0600 Subject: [PATCH] handle basic argument substitution in MessageFormat.format Thanks to Remi for an initial version of this patch. --- classpath/java/text/MessageFormat.java | 10 ++++++++-- test/Strings.java | 7 +++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/classpath/java/text/MessageFormat.java b/classpath/java/text/MessageFormat.java index ad64838a6..77d484580 100644 --- a/classpath/java/text/MessageFormat.java +++ b/classpath/java/text/MessageFormat.java @@ -28,8 +28,14 @@ public MessageFormat(String pattern) { public StringBuffer format(Object[] args, StringBuffer target, FieldPosition p) { - // todo - return target.append(pattern); + // todo: handle other format substitutions and escapes, and make + // this more efficient: + String result = pattern; + int length = args.length; + for (int i = 0; i < length; i++) { + result = result.replace("{" + i + "}", String.valueOf(args[i])); + } + return target.append(result); } public StringBuffer format(Object args, StringBuffer target, FieldPosition p) diff --git a/test/Strings.java b/test/Strings.java index bfba02268..a49b37c9e 100644 --- a/test/Strings.java +++ b/test/Strings.java @@ -139,5 +139,12 @@ public static void main(String[] args) throws Exception { testDecode(false); testDecode(true); + + expect + (java.text.MessageFormat.format + ("{0} enjoy {1} {2}. do {4}? {4} do?", + "I", "grape", "nuts", "foobar", + new Object() { public String toString() { return "you"; } }) + .equals("I enjoy grape nuts. do you? you do?")); } }