diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java index d5b753a0103..ec9aecfa11f 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java @@ -6,6 +6,7 @@ */ package com.ibm.icu.text; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -32,6 +33,7 @@ final public class ListFormatter { private final String start; private final String middle; private final String end; + private final ULocale locale; /** * Internal: Create a ListFormatter from component strings, @@ -52,10 +54,15 @@ final public class ListFormatter { * @internal */ public ListFormatter(String two, String start, String middle, String end) { + this(two, start, middle, end, null); + } + + private ListFormatter(String two, String start, String middle, String end, ULocale locale) { this.two = two; this.start = start; this.middle = middle; this.end = end; + this.locale = locale; } /** @@ -138,6 +145,28 @@ final public class ListFormatter { } return format2(end, result, it.next()); } + + /** + * Returns the pattern to use for a particular item count. + * @param count the item count. + * @return the pattern with {0}, {1}, {2}, etc. + */ + public String createPatternForNumItems(int count) { + ArrayList list = new ArrayList(); + for (int i = 0; i < count; i++) { + list.add(String.format("{%d}", i)); + } + return format(list); + } + + /** + * Returns the locale of this object. + * @deprecated + * @internal + */ + public ULocale getLocale() { + return locale; + } private String format2(String pattern, Object a, Object b) { int i0 = pattern.indexOf("{0}"); @@ -183,7 +212,8 @@ final public class ListFormatter { r.getWithFallback("2").getString(), r.getWithFallback("start").getString(), r.getWithFallback("middle").getString(), - r.getWithFallback("end").getString()); + r.getWithFallback("end").getString(), + ulocale); } } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java index 803df536f2b..dd3418eef2c 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java @@ -111,6 +111,20 @@ public class ListFormatterTest extends TestFmwk { list.add("C"); assertEquals("list", "A, B, and C", listFormatter.format(list)); } + + public void TestCreatePatternForNumItems() { + ListFormatter listFormatter = ListFormatter.getInstance(ULocale.ENGLISH); + assertEquals( + "createPatternForNumItems", + "{0}, {1}, and {2}", + listFormatter.createPatternForNumItems(3)); + + } + + public void TestGetLocale() { + assertEquals( + "getLocale", ULocale.ENGLISH, ListFormatter.getInstance(ULocale.ENGLISH).getLocale()); + } private boolean isDefaultLocaleEnglishLike() { ULocale defaultLocale = ULocale.getDefault(ULocale.Category.FORMAT);