Showing content from https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1ChoiceFormat.html below:
ICU 77.1: icu::ChoiceFormat Class Reference
ChoiceFormat converts between ranges of numeric values and strings for those ranges. More...
ChoiceFormat (const UnicodeString &pattern, UErrorCode &status) Constructs a new ChoiceFormat from the pattern string. More...
ChoiceFormat (const double *limits, const UnicodeString *formats, int32_t count) Constructs a new ChoiceFormat with the given limits and message strings. More...
ChoiceFormat (const double *limits, const UBool *closures, const UnicodeString *formats, int32_t count) Constructs a new ChoiceFormat with the given limits, closure flags and message strings. More...
ChoiceFormat (const ChoiceFormat &that) Copy constructor. More...
const ChoiceFormat & operator= (const ChoiceFormat &that) Assignment operator. More...
virtual ~ChoiceFormat () Destructor. More...
virtual ChoiceFormat * clone () const override Clones this Format object. More...
virtual bool operator== (const Format &other) const override Returns true if the given Format objects are semantically equal. More...
virtual void applyPattern (const UnicodeString &pattern, UErrorCode &status) Sets the pattern. More...
virtual void applyPattern (const UnicodeString &pattern, UParseError &parseError, UErrorCode &status) Sets the pattern. More...
virtual UnicodeString & toPattern (UnicodeString &pattern) const Gets the pattern. More...
virtual void setChoices (const double *limitsToCopy, const UnicodeString *formatsToCopy, int32_t count) Sets the choices to be used in formatting. More...
virtual void setChoices (const double *limits, const UBool *closures, const UnicodeString *formats, int32_t count) Sets the choices to be used in formatting. More...
virtual const double * getLimits (int32_t &count) const Returns nullptr and 0. More...
virtual const UBool * getClosures (int32_t &count) const Returns nullptr and 0. More...
virtual const UnicodeString * getFormats (int32_t &count) const Returns nullptr and 0. More...
virtual UnicodeString & format (double number, UnicodeString &appendTo, FieldPosition &pos) const override Formats a double number using this object's choices. More...
virtual UnicodeString & format (int32_t number, UnicodeString &appendTo, FieldPosition &pos) const override Formats an int32_t number using this object's choices. More...
virtual UnicodeString & format (int64_t number, UnicodeString &appendTo, FieldPosition &pos) const override Formats an int64_t number using this object's choices. More...
virtual UnicodeString & format (const Formattable *objs, int32_t cnt, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &success) const Formats an array of objects using this object's choices. More...
virtual void parse (const UnicodeString &text, Formattable &result, ParsePosition &parsePosition) const override Looks for the longest match of any message string on the input text and, if there is a match, sets the result object to the corresponding range's number. More...
virtual UClassID getDynamicClassID () const override Returns a unique class ID POLYMORPHICALLY. More...
virtual UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override Format an object to produce a string. More...
virtual UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override Format an object to produce a string. More...
UnicodeString & format (double number, UnicodeString &appendTo) const Format a double number. More...
UnicodeString & format (int32_t number, UnicodeString &appendTo) const Format a long number. More...
UnicodeString & format (int64_t number, UnicodeString &appendTo) const Format an int64 number. More...
virtual UnicodeString & format (double number, UnicodeString &appendTo, FieldPosition &pos) const=0 Format a double number. More...
virtual UnicodeString & format (double number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format a double number. More...
virtual UnicodeString & format (double number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format a double number. More...
virtual UnicodeString & format (int32_t number, UnicodeString &appendTo, FieldPosition &pos) const=0 Format a long number. More...
virtual UnicodeString & format (int32_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format a long number. More...
virtual UnicodeString & format (int32_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format an int32 number. More...
virtual UnicodeString & format (int64_t number, UnicodeString &appendTo, FieldPosition &pos) const Format an int64 number. More...
virtual UnicodeString & format (int64_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format an int64 number. More...
virtual UnicodeString & format (int64_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format an int64 number. More...
virtual UnicodeString & format (StringPiece number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format a decimal number. More...
virtual UnicodeString & format (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format a decimal number. More...
virtual UnicodeString & format (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format a decimal number. More...
virtual void parse (const UnicodeString &text, Formattable &result, ParsePosition &parsePosition) const=0 Return a long if possible (e.g. More...
virtual void parse (const UnicodeString &text, Formattable &result, UErrorCode &status) const Parse a string as a numeric value, and return a Formattable numeric object. More...
virtual ~NumberFormat () Destructor. More...
virtual UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override Format an object to produce a string. More...
virtual UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override Format an object to produce a string. More...
virtual void parseObject (const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const override Parse a string to produce an object. More...
UnicodeString & format (double number, UnicodeString &appendTo) const Format a double number. More...
UnicodeString & format (int32_t number, UnicodeString &appendTo) const Format a long number. More...
UnicodeString & format (int64_t number, UnicodeString &appendTo) const Format an int64 number. More...
virtual UnicodeString & format (double number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format a double number. More...
virtual UnicodeString & format (double number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format a double number. More...
virtual UnicodeString & format (int32_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format a long number. More...
virtual UnicodeString & format (int32_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format an int32 number. More...
virtual UnicodeString & format (int64_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format an int64 number. More...
virtual UnicodeString & format (int64_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format an int64 number. More...
virtual UnicodeString & format (StringPiece number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format a decimal number. More...
virtual UnicodeString & format (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format a decimal number. More...
virtual UnicodeString & format (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const Format a decimal number. More...
virtual void parse (const UnicodeString &text, Formattable &result, UErrorCode &status) const Parse a string as a numeric value, and return a Formattable numeric object. More...
virtual CurrencyAmount * parseCurrency (const UnicodeString &text, ParsePosition &pos) const Parses text from the given string as a currency amount. More...
UBool isParseIntegerOnly () const Return true if this format will parse numbers as integers only. More...
virtual void setParseIntegerOnly (UBool value) Sets whether or not numbers should be parsed as integers only. More...
virtual void setLenient (UBool enable) Sets whether lenient parsing should be enabled (it is off by default). More...
virtual UBool isLenient () const Returns whether lenient parsing is enabled (it is off by default). More...
UBool isGroupingUsed () const Returns true if grouping is used in this format. More...
virtual void setGroupingUsed (UBool newValue) Set whether or not grouping will be used in this format. More...
int32_t getMaximumIntegerDigits () const Returns the maximum number of digits allowed in the integer portion of a number. More...
virtual void setMaximumIntegerDigits (int32_t newValue) Sets the maximum number of digits allowed in the integer portion of a number. More...
int32_t getMinimumIntegerDigits () const Returns the minimum number of digits allowed in the integer portion of a number. More...
virtual void setMinimumIntegerDigits (int32_t newValue) Sets the minimum number of digits allowed in the integer portion of a number. More...
int32_t getMaximumFractionDigits () const Returns the maximum number of digits allowed in the fraction portion of a number. More...
virtual void setMaximumFractionDigits (int32_t newValue) Sets the maximum number of digits allowed in the fraction portion of a number. More...
int32_t getMinimumFractionDigits () const Returns the minimum number of digits allowed in the fraction portion of a number. More...
virtual void setMinimumFractionDigits (int32_t newValue) Sets the minimum number of digits allowed in the fraction portion of a number. More...
virtual void setCurrency (const char16_t *theCurrency, UErrorCode &ec) Sets the currency used to display currency amounts. More...
const char16_t * getCurrency () const Gets the currency used to display currency amounts. More...
virtual void setContext (UDisplayContext value, UErrorCode &status) Set a particular UDisplayContext value in the formatter, such as UDISPCTX_CAPITALIZATION_FOR_STANDALONE. More...
virtual UDisplayContext getContext (UDisplayContextType type, UErrorCode &status) const Get the formatter's UDisplayContext value for the specified UDisplayContextType, such as UDISPCTX_TYPE_CAPITALIZATION. More...
virtual ERoundingMode getRoundingMode () const Get the rounding mode. More...
virtual void setRoundingMode (ERoundingMode roundingMode) Set the rounding mode. More...
UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const Formats an object to produce a string. More...
virtual UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const=0 Format an object to produce a string. More...
virtual UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const Format an object to produce a string. More...
virtual ~Format () Destructor. More...
bool operator!= (const Format &other) const Return true if the given Format objects are not semantically equal. More...
UnicodeString & format (const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const Formats an object to produce a string. More...
void parseObject (const UnicodeString &source, Formattable &result, UErrorCode &status) const Parses a string to produce an object. More...
Locale getLocale (ULocDataLocaleType type, UErrorCode &status) const Get the locale for this format object. More...
const char * getLocaleID (ULocDataLocaleType type, UErrorCode &status) const Get the locale for this format object. More...
virtual ~UObject () Destructor. More...
static UClassID getStaticClassID () Returns the class ID for this class. More...
static NumberFormat * createInstance (UErrorCode &) Create a default style NumberFormat for the current default locale. More...
static NumberFormat * createInstance (const Locale &inLocale, UErrorCode &) Create a default style NumberFormat for the specified locale. More...
static NumberFormat * createInstance (const Locale &desiredLocale, UNumberFormatStyle style, UErrorCode &errorCode) Create a specific style NumberFormat for the specified locale. More...
static NumberFormat * internalCreateInstance (const Locale &desiredLocale, UNumberFormatStyle style, UErrorCode &errorCode) ICU use only. More...
static const SharedNumberFormat * createSharedInstance (const Locale &inLocale, UNumberFormatStyle style, UErrorCode &status) ICU use only. More...
static NumberFormat * createCurrencyInstance (UErrorCode &) Returns a currency format for the current default locale. More...
static NumberFormat * createCurrencyInstance (const Locale &inLocale, UErrorCode &) Returns a currency format for the specified locale. More...
static NumberFormat * createPercentInstance (UErrorCode &) Returns a percentage format for the current default locale. More...
static NumberFormat * createPercentInstance (const Locale &inLocale, UErrorCode &) Returns a percentage format for the specified locale. More...
static NumberFormat * createScientificInstance (UErrorCode &) Returns a scientific format for the current default locale. More...
static NumberFormat * createScientificInstance (const Locale &inLocale, UErrorCode &) Returns a scientific format for the specified locale. More...
static const Locale * getAvailableLocales (int32_t &count) Get the set of Locales for which NumberFormats are installed. More...
static URegistryKey registerFactory (NumberFormatFactory *toAdopt, UErrorCode &status) Register a new NumberFormatFactory. More...
static UBool unregister (URegistryKey key, UErrorCode &status) Unregister a previously-registered NumberFormatFactory using the key returned from the register call. More...
static StringEnumeration * getAvailableLocales () Return a StringEnumeration over the locales available at the time of the call, including registered locales. More...
static UClassID getStaticClassID () Return the class ID for this class. More...
enum ERoundingMode {
kRoundCeiling , kRoundFloor , kRoundDown , kRoundUp ,
kRoundHalfEven , kRoundHalfDown , kRoundHalfUp , kRoundUnnecessary ,
kRoundHalfOdd , kRoundHalfCeiling , kRoundHalfFloor
} Rounding mode. More...
enum EAlignmentFields {
kIntegerField = UNUM_INTEGER_FIELD , kFractionField = UNUM_FRACTION_FIELD , kDecimalSeparatorField = UNUM_DECIMAL_SEPARATOR_FIELD , kExponentSymbolField = UNUM_EXPONENT_SYMBOL_FIELD ,
kExponentSignField = UNUM_EXPONENT_SIGN_FIELD , kExponentField = UNUM_EXPONENT_FIELD , kGroupingSeparatorField = UNUM_GROUPING_SEPARATOR_FIELD , kCurrencyField = UNUM_CURRENCY_FIELD ,
kPercentField = UNUM_PERCENT_FIELD , kPermillField = UNUM_PERMILL_FIELD , kSignField = UNUM_SIGN_FIELD , kMeasureUnitField = UNUM_MEASURE_UNIT_FIELD ,
kCompactField = UNUM_COMPACT_FIELD , INTEGER_FIELD = UNUM_INTEGER_FIELD , FRACTION_FIELD = UNUM_FRACTION_FIELD
} Alignment Field constants used to construct a FieldPosition object. More...
NumberFormat () Default constructor for subclass use only. More...
NumberFormat (const NumberFormat &) Copy constructor. More...
NumberFormat & operator= (const NumberFormat &) Assignment operator. More...
virtual void getEffectiveCurrency (char16_t *result, UErrorCode &ec) const Returns the currency in effect for this formatter. More...
void setLocaleIDs (const char *valid, const char *actual) Format () Default constructor for subclass use only. More...
Format (const Format &) Format & operator= (const Format &) static NumberFormat * makeInstance (const Locale &desiredLocale, UNumberFormatStyle style, UBool mustBeDecimalFormat, UErrorCode &errorCode) Creates the specified number format style of the desired locale. More...
static void syntaxError (const UnicodeString &pattern, int32_t pos, UParseError &parseError) Simple function for initializing a UParseError from a UnicodeString. More...
static const int32_t gDefaultMaxIntegerDigits static const int32_t gDefaultMinIntegerDigits
ChoiceFormat converts between ranges of numeric values and strings for those ranges.
The strings must conform to the MessageFormat pattern syntax.
ChoiceFormat
is probably not what you need. Please use MessageFormat
with plural
arguments for proper plural selection, and select
arguments for simple selection among a fixed set of choices!
A ChoiceFormat
splits the real number line -∞
to +∞
into two or more contiguous ranges. Each range is mapped to a string.
ChoiceFormat
was originally intended for displaying grammatically correct plurals such as "There is one file." vs. "There are 2 files." However, plural rules for many languages are too complex for the capabilities of ChoiceFormat, and its requirement of specifying the precise rules for each message is unmanageable for translators.
There are two methods of defining a ChoiceFormat
; both are equivalent. The first is by using a string pattern. This is the preferred method in most cases. The second method is through direct specification of the arrays that logically make up the ChoiceFormat
.
Note: Typically, choice formatting is done (if done at all) via MessageFormat
with a choice
argument type, rather than using a stand-alone ChoiceFormat
.
Patterns and Their Interpretation
The pattern string defines the range boundaries and the strings for each number range. Syntax:
choiceStyle = number separator message ('|' number separator message)*
number = normal_number | ['-'] ∞ (U+221E, infinity)
normal_number = double value (unlocalized ASCII string)
separator = less_than | less_than_or_equal
less_than = '<'
less_than_or_equal = '#' | ≤ (U+2264)
message: see MessageFormat
Pattern_White_Space between syntax elements is ignored, except around each range's sub-message.
Each numeric sub-range extends from the current range's number to the next range's number. The number itself is included in its range if a less_than_or_equal
sign is used, and excluded from its range (and instead included in the previous range) if a less_than
sign is used.
When a ChoiceFormat
is constructed from arrays of numbers, closure flags and strings, they are interpreted just like the sequence of (number separator string)
in an equivalent pattern string. closure[i]==true
corresponds to a less_than
separator sign. The equivalent pattern string will be constructed automatically.
During formatting, a number is mapped to the first range where the number is not greater than the range's upper limit. That range's message string is returned. A NaN maps to the very first range.
During parsing, a range is selected for the longest match of any range's message. That range's number is returned, ignoring the separator/closure. Only a simple string match is performed, without parsing of arguments that might be specified in the message strings.
Note that the first range's number is ignored in formatting but may be returned from parsing.
Examples
Here is an example of two arrays that map the number 1..7
to the English day of the week abbreviations Sun..Sat
. No closures array is given; this is the same as specifying all closures to be false
.
{1,2,3,4,5,6,7},
{"Sun","Mon","Tue","Wed","Thur","Fri","Sat"}
Here is an example that maps the ranges [-Inf, 1), [1, 1], and (1, +Inf] to three strings. That is, the number line is split into three ranges: x < 1.0, x = 1.0, and x > 1.0. (The round parentheses in the notation above indicate an exclusive boundary, like the turned bracket in European notation: [-Inf, 1) == [-Inf, 1[ )
{0, 1, 1},
{false, false, true},
{"no files", "one file", "many files"}
Here is an example that shows formatting and parsing:
#include <iostream.h>
int main(int argc, char *argv[]) {
double limits[] = {1,2,3,4,5,6,7};
UnicodeString monthNames[] = {
"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
UnicodeString str;
char buf[256];
for (double x = 1.0; x <= 8.0; x += 1.0) {
fmt.format(x, str);
str.extract(0, str.length(), buf, 256, "");
str.truncate(0);
cout << x << " -> "
<< buf << endl;
}
cout << endl;
return 0;
}
ChoiceFormat(const UnicodeString &pattern, UErrorCode &status)
Constructs a new ChoiceFormat from the pattern string.
User subclasses are not supported. While clients may write subclasses, such code will not necessarily work and will not be guaranteed to work stably from release to release.
-
Deprecated:
-
ICU 49 Use MessageFormat instead, with plural and select arguments.
Definition at line 176 of file choicfmt.h.
virtual void icu::NumberFormat::parse
Return a long if possible (e.g.
within range LONG_MAX, LONG_MAX], and with no decimals), otherwise a double. If IntegerOnly is set, will stop at a decimal point (or equivalent; e.g. for rational numbers "1 2/3", will stop after the 1).
If no object can be parsed, index is unchanged, and nullptr is returned.
This is a pure virtual which concrete subclasses must implement.
-
Parameters
-
text The text to be parsed. result Formattable to be set to the parse result. If parse fails, return contents are undefined. parsePosition The position to start parsing at on input. On output, moved to after the last successfully parse character. On parse failure, does not change.
-
Stable:
-
ICU 2.0
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4