namespace
{
OUString mungeUnicodeStringToOUString(const icu::UnicodeString &rIn, UErrorCode &rCode)
{ // Apply NFKC normalization to get normal letters
icu::UnicodeString normalized;
icu::Normalizer::normalize(rIn, UNORM_NFKC, 0, normalized, rCode); // Convert the normalized UnicodeString to OUString
OUString sRet = (U_SUCCESS(rCode))
? OUString(reinterpret_cast<const sal_Unicode *>(normalized.getBuffer()), normalized.length())
: OUString(); // replace any minus signs with hyphen-minus so that negative numbers // from the simple number formatter and heavy-duty pattern formatter // agree as to their negative number sign return sRet.replace(0x2212, '-');
}
}
OUString sValueWithNoOrdinal = mungeUnicodeStringToOUString(sFormatWithNoOrdinal, nCode); if (!U_SUCCESS(nCode)) return retValue;
int32_t nRuleSets = formatter.getNumberOfRuleSetNames( );
std::vector<OUString> retVec;
retVec.reserve(nRuleSets); for (int32_t i = 0; i < nRuleSets; ++i)
{
icu::UnicodeString ruleSet = formatter.getRuleSetName(i);
// format the string
icu::UnicodeString sFormatWithOrdinal;
icu::FieldPosition icuPosB;
formatter.format(static_cast<int32_t>(nNumber), ruleSet, sFormatWithOrdinal, icuPosB, nCode);
if (!U_SUCCESS(nCode)) continue;
OUString sValueWithOrdinal = mungeUnicodeStringToOUString(sFormatWithOrdinal, nCode); if (!U_SUCCESS(nCode)) continue;
// fdo#54486 let's make sure that the ordinal format and the non-ordinal // format match at the start, so that the expectation can be verified // that there is some trailing "ordinal suffix" which can be extracted bool bSimpleOrdinalSuffix = sValueWithOrdinal.startsWith(sValueWithNoOrdinal);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.