switch (cp) { case u'\'':
output.append(u"''", -1); break;
case u'-': case u'+': case u'%': case u'‰': case u'¤': if (state == STATE_BASE) {
output.append(u'\'');
output.append(cp);
state = STATE_INSIDE_QUOTE;
} else {
output.append(cp);
} break;
switch (state) { case STATE_BASE: switch (cp) { case u'\'':
state = STATE_FIRST_QUOTE;
offset += count; // continue to the next code point break; case u'-': return makeTag(offset + count, TYPE_MINUS_SIGN, STATE_BASE, 0); case u'+': return makeTag(offset + count, TYPE_PLUS_SIGN, STATE_BASE, 0); case u'~': return makeTag(offset + count, TYPE_APPROXIMATELY_SIGN, STATE_BASE, 0); case u'%': return makeTag(offset + count, TYPE_PERCENT, STATE_BASE, 0); case u'‰': return makeTag(offset + count, TYPE_PERMILLE, STATE_BASE, 0); case u'¤':
state = STATE_FIRST_CURR;
offset += count; // continue to the next code point break; default: return makeTag(offset + count, TYPE_CODEPOINT, STATE_BASE, cp);
} break; case STATE_FIRST_QUOTE: if (cp == u'\'') { return makeTag(offset + count, TYPE_CODEPOINT, STATE_BASE, cp);
} else { return makeTag(offset + count, TYPE_CODEPOINT, STATE_INSIDE_QUOTE, cp);
} case STATE_INSIDE_QUOTE: if (cp == u'\'') {
state = STATE_AFTER_QUOTE;
offset += count; // continue to the next code point break;
} else { return makeTag(offset + count, TYPE_CODEPOINT, STATE_INSIDE_QUOTE, cp);
} case STATE_AFTER_QUOTE: if (cp == u'\'') { return makeTag(offset + count, TYPE_CODEPOINT, STATE_INSIDE_QUOTE, cp);
} else {
state = STATE_BASE; // re-evaluate this code point break;
} case STATE_FIRST_CURR: if (cp == u'¤') {
state = STATE_SECOND_CURR;
offset += count; // continue to the next code point break;
} else { return makeTag(offset, TYPE_CURRENCY_SINGLE, STATE_BASE, 0);
} case STATE_SECOND_CURR: if (cp == u'¤') {
state = STATE_THIRD_CURR;
offset += count; // continue to the next code point break;
} else { return makeTag(offset, TYPE_CURRENCY_DOUBLE, STATE_BASE, 0);
} case STATE_THIRD_CURR: if (cp == u'¤') {
state = STATE_FOURTH_CURR;
offset += count; // continue to the next code point break;
} else { return makeTag(offset, TYPE_CURRENCY_TRIPLE, STATE_BASE, 0);
} case STATE_FOURTH_CURR: if (cp == u'¤') {
state = STATE_FIFTH_CURR;
offset += count; // continue to the next code point break;
} else { return makeTag(offset, TYPE_CURRENCY_QUAD, STATE_BASE, 0);
} case STATE_FIFTH_CURR: if (cp == u'¤') {
state = STATE_OVERFLOW_CURR;
offset += count; // continue to the next code point break;
} else { return makeTag(offset, TYPE_CURRENCY_QUINT, STATE_BASE, 0);
} case STATE_OVERFLOW_CURR: if (cp == u'¤') {
offset += count; // continue to the next code point and loop back to this state break;
} else { return makeTag(offset, TYPE_CURRENCY_OVERFLOW, STATE_BASE, 0);
} default:
UPRV_UNREACHABLE_EXIT;
}
} // End of string switch (state) { case STATE_BASE: // No more tokens in string. return {-1}; case STATE_FIRST_QUOTE: case STATE_INSIDE_QUOTE: // For consistent behavior with the JDK and ICU 58, set an error here.
status = U_ILLEGAL_ARGUMENT_ERROR; return {-1}; case STATE_AFTER_QUOTE: // No more tokens in string. return {-1}; case STATE_FIRST_CURR: return makeTag(offset, TYPE_CURRENCY_SINGLE, STATE_BASE, 0); case STATE_SECOND_CURR: return makeTag(offset, TYPE_CURRENCY_DOUBLE, STATE_BASE, 0); case STATE_THIRD_CURR: return makeTag(offset, TYPE_CURRENCY_TRIPLE, STATE_BASE, 0); case STATE_FOURTH_CURR: return makeTag(offset, TYPE_CURRENCY_QUAD, STATE_BASE, 0); case STATE_FIFTH_CURR: return makeTag(offset, TYPE_CURRENCY_QUINT, STATE_BASE, 0); case STATE_OVERFLOW_CURR: return makeTag(offset, TYPE_CURRENCY_OVERFLOW, STATE_BASE, 0); default:
UPRV_UNREACHABLE_EXIT;
}
}
bool AffixUtils::hasNext(const AffixTag &tag, const UnicodeString &string) { // First check for the {-1} and default initializer syntax. if (tag.offset < 0) { returnfalse;
} elseif (tag.offset == 0) { return string.length() > 0;
} // The rest of the fields are safe to use now. // Special case: the last character in string is an end quote. if (tag.state == STATE_INSIDE_QUOTE && tag.offset == string.length() - 1 &&
string.charAt(tag.offset) == u'\'') { returnfalse;
} elseif (tag.state != STATE_BASE) { returntrue;
} else { return tag.offset < string.length();
}
}
#endif/* #if !UCONFIG_NO_FORMATTING */
Messung V0.5
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet)
¤
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.