本文整理汇总了C++中Formattable::setString方法的典型用法代码示例。如果您正苦于以下问题:C++ Formattable::setString方法的具体用法?C++ Formattable::setString怎么用?C++ Formattable::setString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Formattable
的用法示例。
在下文中一共展示了Formattable::setString方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseType
void PluralFormat::parseType(const UnicodeString& source, const NFRule *rbnfLenientScanner, Formattable& result, FieldPosition& pos) const {
// If no pattern was applied, return null.
if (msgPattern.countParts() == 0) {
pos.setBeginIndex(-1);
pos.setEndIndex(-1);
return;
}
int partIndex = 0;
int currMatchIndex;
int count=msgPattern.countParts();
int startingAt = pos.getBeginIndex();
if (startingAt < 0) {
startingAt = 0;
}
// The keyword is null until we need to match against a non-explicit, not-"other" value.
// Then we get the keyword from the selector.
// (In other words, we never call the selector if we match against an explicit value,
// or if the only non-explicit keyword is "other".)
UnicodeString keyword;
UnicodeString matchedWord;
const UnicodeString& pattern = msgPattern.getPatternString();
int matchedIndex = -1;
// Iterate over (ARG_SELECTOR ARG_START message ARG_LIMIT) tuples
// until the end of the plural-only pattern.
while (partIndex < count) {
const MessagePattern::Part* partSelector = &msgPattern.getPart(partIndex++);
if (partSelector->getType() != UMSGPAT_PART_TYPE_ARG_SELECTOR) {
// Bad format
continue;
}
const MessagePattern::Part* partStart = &msgPattern.getPart(partIndex++);
if (partStart->getType() != UMSGPAT_PART_TYPE_MSG_START) {
// Bad format
continue;
}
const MessagePattern::Part* partLimit = &msgPattern.getPart(partIndex++);
if (partLimit->getType() != UMSGPAT_PART_TYPE_MSG_LIMIT) {
// Bad format
continue;
}
UnicodeString currArg = pattern.tempSubString(partStart->getLimit(), partLimit->getIndex() - partStart->getLimit());
if (rbnfLenientScanner != NULL) {
// If lenient parsing is turned ON, we've got some time consuming parsing ahead of us.
int32_t length = -1;
currMatchIndex = rbnfLenientScanner->findTextLenient(source, currArg, startingAt, &length);
}
else {
currMatchIndex = source.indexOf(currArg, startingAt);
}
if (currMatchIndex >= 0 && currMatchIndex >= matchedIndex && currArg.length() > matchedWord.length()) {
matchedIndex = currMatchIndex;
matchedWord = currArg;
keyword = pattern.tempSubString(partStart->getLimit(), partLimit->getIndex() - partStart->getLimit());
}
}
if (matchedIndex >= 0) {
pos.setBeginIndex(matchedIndex);
pos.setEndIndex(matchedIndex + matchedWord.length());
result.setString(keyword);
return;
}
// Not found!
pos.setBeginIndex(-1);
pos.setEndIndex(-1);
}