Loading...
Searching...
No Matches
icu::UnicodeSet Class Referencefinal

A mutable set of Unicode characters and multicharacter strings. More...

`#include <uniset.h>`

Inheritance diagram for icu::UnicodeSet:

## Public Types

enum | { MIN_VALUE = 0 , MAX_VALUE = 0x10ffff }
enum | ESerialization { kSerialized }

## Public Member Functions

UBool | isBogus () const
| Determine if this object contains a valid set.
void | setToBogus ()
| Make this UnicodeSet object invalid.
| UnicodeSet ()
| Constructs an empty set.
| UnicodeSet (UChar32 start, UChar32 end)
| Constructs a set containing the given range.
| UnicodeSet (const uint16_t buffer[], int32_t bufferLen, ESerialization serialization, UErrorCode &status)
| Constructs a set from the output of serialize().
| UnicodeSet (const UnicodeString &pattern, UErrorCode &status)
| Constructs a set from the given pattern.
| UnicodeSet (const UnicodeString &pattern, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
| Constructs a set from the given pattern.
| UnicodeSet (const UnicodeString &pattern, ParsePosition &pos, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
| Constructs a set from the given pattern.
| UnicodeSet (const UnicodeSet &o)
| Constructs a set that is identical to the given UnicodeSet.
virtual | ~UnicodeSet ()
| Destructs the set.
UnicodeSet & | operator= (const UnicodeSet &o)
| Assigns this object to be a copy of another.
bool | operator== (const UnicodeSet &o) const
| Compares the specified object with this set for equality.
bool | operator!= (const UnicodeSet &o) const
| Compares the specified object with this set for equality.
virtual UnicodeSet * | clone () const override
| Returns a copy of this object.
int32_t | hashCode () const
| Returns the hash code value for this set.
USet * | toUSet ()
| Produce a USet * pointer for this UnicodeSet.
const USet * | toUSet () const
| Produce a const USet * pointer for this UnicodeSet.
UBool | isFrozen () const
| Determines whether the set has been frozen (made immutable) or not.
UnicodeSet * | freeze ()
| Freeze the set (make it immutable).
UnicodeSet * | cloneAsThawed () const
| Clone the set and make the clone mutable.
UnicodeSet & | set (UChar32 start, UChar32 end)
| Make this object represent the range start - end.
UnicodeSet & | applyPattern (const UnicodeString &pattern, UErrorCode &status)
| Modifies this set to represent the set specified by the given pattern, ignoring Unicode Pattern_White_Space characters.
UnicodeSet & | applyPattern (const UnicodeString &pattern, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
| Modifies this set to represent the set specified by the given pattern, optionally ignoring Unicode Pattern_White_Space characters.
UnicodeSet & | applyPattern (const UnicodeString &pattern, ParsePosition &pos, uint32_t options, const SymbolTable *symbols, UErrorCode &status)
| Parses the given pattern, starting at the given position.
virtual UnicodeString & | toPattern (UnicodeString &result, UBool escapeUnprintable=false) const override
| Returns a string representation of this set.
UnicodeSet & | applyIntPropertyValue (UProperty prop, int32_t value, UErrorCode &ec)
| Modifies this set to contain those code points which have the given value for the given binary or enumerated property, as returned by u_getIntPropertyValue.
UnicodeSet & | applyPropertyAlias (const UnicodeString &prop, const UnicodeString &value, UErrorCode &ec)
| Modifies this set to contain those code points which have the given value for the given property.
int32_t | size () const
| Returns the number of elements in this set (its cardinality).
UBool | isEmpty () const
| Returns true if this set contains no elements.
UBool | hasStrings () const
virtual UBool | contains (UChar32 c) const override
| Returns true if this set contains the given character.
UBool | contains (UChar32 start, UChar32 end) const
| Returns true if this set contains every character of the given range.
UBool | contains (const UnicodeString &s) const
| Returns true if this set contains the given multicharacter string.
UBool | containsAll (const UnicodeSet &c) const
| Returns true if this set contains all the characters and strings of the given set.
UBool | containsAll (const UnicodeString &s) const
| Returns true if this set contains all the characters of the given string.
UBool | containsNone (UChar32 start, UChar32 end) const
| Returns true if this set contains none of the characters of the given range.
UBool | containsNone (const UnicodeSet &c) const
| Returns true if this set contains none of the characters and strings of the given set.
UBool | containsNone (const UnicodeString &s) const
| Returns true if this set contains none of the characters of the given string.
UBool | containsSome (UChar32 start, UChar32 end) const
| Returns true if this set contains one or more of the characters in the given range.
UBool | containsSome (const UnicodeSet &s) const
| Returns true if this set contains one or more of the characters and strings of the given set.
UBool | containsSome (const UnicodeString &s) const
| Returns true if this set contains one or more of the characters of the given string.
int32_t | span (const char16_t *s, int32_t length, USetSpanCondition spanCondition) const
| Returns the length of the initial substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).
int32_t | span (const UnicodeString &s, int32_t start, USetSpanCondition spanCondition) const
| Returns the end of the substring of the input string according to the USetSpanCondition.
int32_t | spanBack (const char16_t *s, int32_t length, USetSpanCondition spanCondition) const
| Returns the start of the trailing substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).
int32_t | spanBack (const UnicodeString &s, int32_t limit, USetSpanCondition spanCondition) const
| Returns the start of the substring of the input string according to the USetSpanCondition.
int32_t | spanUTF8 (const char *s, int32_t length, USetSpanCondition spanCondition) const
| Returns the length of the initial substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).
int32_t | spanBackUTF8 (const char *s, int32_t length, USetSpanCondition spanCondition) const
| Returns the start of the trailing substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).
UMatchDegree | matches (const Replaceable &text, int32_t &offset, int32_t limit, UBool incremental) override
| Implement UnicodeMatcher::matches().
virtual void | addMatchSetTo (UnicodeSet &toUnionTo) const override
| Implementation of UnicodeMatcher API.
int32_t | indexOf (UChar32 c) const
| Returns the index of the given character within this set, where the set is ordered by ascending code point.
UChar32 | charAt (int32_t index) const
| Returns the character at the given index within this set, where the set is ordered by ascending code point.
U_HEADER_NESTED_NAMESPACE::USetCodePoints | codePoints () const
| Returns a C++ "range" for iterating over the code points of this set.
U_HEADER_NESTED_NAMESPACE::USetRanges | ranges () const
| Returns a C++ "range" for iterating over the code point ranges of this set.
U_HEADER_NESTED_NAMESPACE::USetStrings | strings () const
| Returns a C++ "range" for iterating over the empty and multi-character strings of this set.
U_HEADER_NESTED_NAMESPACE::USetElementIterator | begin () const
| Returns a C++ iterator for iterating over all of the elements of this set.
U_HEADER_NESTED_NAMESPACE::USetElementIterator | end () const
UnicodeSet & | add (UChar32 start, UChar32 end)
| Adds the specified range to this set if it is not already present.
UnicodeSet & | add (UChar32 c)
| Adds the specified character to this set if it is not already present.
UnicodeSet & | add (const UnicodeString &s)
| Adds the specified multicharacter to this set if it is not already present.
UnicodeSet & | addAll (const UnicodeString &s)
| Adds each of the characters in this string to the set.
UnicodeSet & | retainAll (const UnicodeString &s)
| Retains EACH of the characters in this string.
UnicodeSet & | complementAll (const UnicodeString &s)
| Complement EACH of the characters in this string.
UnicodeSet & | removeAll (const UnicodeString &s)
| Remove EACH of the characters in this string.
UnicodeSet & | retain (UChar32 start, UChar32 end)
| Retain only the elements in this set that are contained in the specified range.
UnicodeSet & | retain (UChar32 c)
| Retain the specified character from this set if it is present.
UnicodeSet & | retain (const UnicodeString &s)
| Retains only the specified string from this set if it is present.
UnicodeSet & | remove (UChar32 start, UChar32 end)
| Removes the specified range from this set if it is present.
UnicodeSet & | remove (UChar32 c)
| Removes the specified character from this set if it is present.
UnicodeSet & | remove (const UnicodeString &s)
| Removes the specified string from this set if it is present.
UnicodeSet & | complement ()
| This is equivalent to `complement(MIN_VALUE, MAX_VALUE)`.
UnicodeSet & | complement (UChar32 start, UChar32 end)
| Complements the specified range in this set.
UnicodeSet & | complement (UChar32 c)
| Complements the specified character in this set.
UnicodeSet & | complement (const UnicodeString &s)
| Complement the specified string in this set.
UnicodeSet & | addAll (const UnicodeSet &c)
| Adds all of the elements in the specified set to this set if they're not already present.
UnicodeSet & | retainAll (const UnicodeSet &c)
| Retains only the elements in this set that are contained in the specified set.
UnicodeSet & | removeAll (const UnicodeSet &c)
| Removes from this set all of its elements that are contained in the specified set.
UnicodeSet & | complementAll (const UnicodeSet &c)
| Complements in this set all elements contained in the specified set.
UnicodeSet & | clear ()
| Removes all of the elements from this set.
UnicodeSet & | closeOver (int32_t attribute)
| Close this set over the given attribute.
UnicodeSet & | removeAllStrings ()
| Remove all strings from this set.
int32_t | getRangeCount () const
| Iteration method that returns the number of ranges contained in this set.
UChar32 | getRangeStart (int32_t index) const
| Iteration method that returns the first character in the specified range of this set.
UChar32 | getRangeEnd (int32_t index) const
| Iteration method that returns the last character in the specified range of this set.
int32_t | serialize (uint16_t *dest, int32_t destCapacity, UErrorCode &ec) const
| Serializes this set into an array of 16-bit integers.
UnicodeSet & | compact ()
| Reallocate this objects internal structures to take up the least possible space, without changing this object's value.
virtual UClassID | getDynamicClassID () const override
| Implement UnicodeFunctor API.
Public Member Functions inherited from icu::UnicodeFilter
virtual | ~UnicodeFilter ()
| Destructor.
virtual UnicodeMatcher * | toMatcher () const override
| UnicodeFunctor API.
virtual void | setData (const TransliterationRuleData *) override
| UnicodeFunctor API.
Public Member Functions inherited from icu::UnicodeFunctor
virtual | ~UnicodeFunctor ()
| Destructor.
virtual UnicodeReplacer * | toReplacer () const
| Cast 'this' to a UnicodeReplacer* pointer and return the pointer, or null if this is not a UnicodeReplacer*.
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor.
Public Member Functions inherited from icu::UnicodeMatcher
virtual | ~UnicodeMatcher ()
| Destructor.

## Static Public Member Functions

static UnicodeSet * | fromUSet (USet *uset)
| Get a UnicodeSet pointer from a USet.
static const UnicodeSet * | fromUSet (const USet *uset)
| Get a UnicodeSet pointer from a const USet.
static UBool | resemblesPattern (const UnicodeString &pattern, int32_t pos)
| Return true if the given position, in the given pattern, appears to be the start of a UnicodeSet pattern.
static UnicodeSet * | createFrom (const UnicodeString &s)
| Makes a set from a multicharacter string.
static UnicodeSet * | createFromAll (const UnicodeString &s)
| Makes a set from each of the characters in the string.
static UClassID | getStaticClassID ()
| Return the class ID for this class.
Static Public Member Functions inherited from icu::UnicodeFilter
static UClassID | getStaticClassID ()
| ICU "poor man's RTTI", returns a UClassID for this class.
Static Public Member Functions inherited from icu::UnicodeFunctor
static UClassID | getStaticClassID ()
| Return the class ID for this class.

## Friends

class | USetAccess
class | RBBIRuleScanner
class | UnicodeSetIterator

## Detailed Description

A mutable set of Unicode characters and multicharacter strings.

Objects of this class represent character classes used in regular expressions. A character specifies a subset of Unicode code points. Legal code points are U+0000 to U+10FFFF, inclusive.

The UnicodeSet class is not designed to be subclassed.

`UnicodeSet` supports two APIs. The first is the operand API that allows the caller to modify the value of a `UnicodeSet` object. It conforms to Java 2's `java.util.Set` interface, although `UnicodeSet` does not actually implement that interface. All methods of `Set` are supported, with the modification that they take a character range or single character instead of an `Object`, and they take a `UnicodeSet` instead of a `Collection`. The operand API may be thought of in terms of boolean logic: a boolean OR is implemented by `add`, a boolean AND is implemented by `retain`, a boolean XOR is implemented by `complement` taking an argument, and a boolean NOT is implemented by `complement` with no argument. In terms of traditional set theory function names, `add` is a union, `retain` is an intersection, `remove` is an asymmetric difference, and `complement` with no argument is a set complement with respect to the superset range `MIN_VALUE-MAX_VALUE`

The second API is the `applyPattern()`/`toPattern()` API from the `java.text.Format`-derived classes. Unlike the methods that add characters, add categories, and control the logic of the set, the method `applyPattern()` sets all attributes of a `UnicodeSet` at once, based on a string pattern.

Pattern syntax

Patterns are accepted by the constructors and the `applyPattern()` methods and returned by the `toPattern()` method. These patterns follow a syntax similar to that employed by version 8 regular expression character classes. Here are some simple examples:

> `[]` | No characters
> `[a]` | The character 'a'
> `[ae]` | The characters 'a' and 'e'
> `[a-e]` | The characters 'a' through 'e' inclusive, in Unicode code point order
> `[\u4E01]` | The character U+4E01
> `[a{ab}{ac}]` | The character 'a' and the multicharacter strings "ab" and "ac"
> `[\p{Lu}]` | All characters in the general category Uppercase Letter

Any character may be preceded by a backslash in order to remove any special meaning. White space characters, as defined by UCharacter.isWhitespace(), are ignored, unless they are escaped.

Property patterns specify a set of characters having a certain property as defined by the Unicode standard. Both the POSIX-like "[:Lu:]" and the Perl-like syntax "\\p{Lu}" are recognized. For a complete list of supported property patterns, see the User's Guide for UnicodeSet at https://unicode-org.github.io/icu/userguide/strings/unicodeset. Actual determination of property data is defined by the underlying Unicode database as implemented by UCharacter.

Patterns specify individual characters, ranges of characters, and Unicode property sets. When elements are concatenated, they specify their union. To complement a set, place a '^' immediately after the opening '['. Property patterns are inverted by modifying their delimiters; "[:^foo]" and "\\P{foo}". In any other location, '^' has no special meaning.

Since ICU 70, "[^...]", "[:^foo]", "\\P{foo}", and "[:binaryProperty=No:]" perform a “code point complement” (all code points minus the original set), removing all multicharacter strings, equivalent to `.complement().removeAllStrings()`. The complement() API function continues to perform a symmetric difference with all code points and thus retains all multicharacter strings.

Ranges are indicated by placing two a '-' between two characters, as in "a-z". This specifies the range of all characters from the left to the right, in Unicode order. If the left character is greater than or equal to the right character it is a syntax error. If a '-' occurs as the first character after the opening '[' or '[^', or if it occurs as the last character before the closing ']', then it is taken as a literal. Thus "[a\-b]", "[-ab]", and "[ab-]" all indicate the same set of three characters, 'a', 'b', and '-'.

Sets may be intersected using the '&' operator or the asymmetric set difference may be taken using the '-' operator, for example, "[[:L:]&[\\u0000-\\u0FFF]]" indicates the set of all Unicode letters with values less than 4096. Operators ('&' and '|') have equal precedence and bind left-to-right. Thus "[[:L:]-[a-z]-[\\u0100-\\u01FF]]" is equivalent to "[[[:L:]-[a-z]]-[\\u0100-\\u01FF]]". This only really matters for difference; intersection is commutative.

`[a]` | The set containing 'a'
`[a-z]` | The set containing 'a' through 'z' and all letters in between, in Unicode order
`[^a-z]` | The set containing all characters but 'a' through 'z', that is, U+0000 through 'a'-1 and 'z'+1 through U+10FFFF
`[[pat1][pat2]]` | The union of sets specified by pat1 and pat2
`[[pat1]&[pat2]]` | The intersection of sets specified by pat1 and pat2
`[[pat1]-[pat2]]` | The asymmetric difference of sets specified by pat1 and pat2
`[:Lu:] or \p{Lu}` | The set of characters having the specified Unicode property; in this case, Unicode uppercase letters
`[:^Lu:] or \P{Lu}` | The set of characters not having the given Unicode property

Formal syntax

> `pattern :=` | `('[' '^'? item* ']') | property`
> `item :=` | `char | (char '-' char) | pattern-expr`
> `pattern-expr :=` | `pattern | pattern-expr pattern | pattern-expr op pattern`
> `op :=` | `'&' | '-'`
> `special :=` | `'[' | ']' | '-'`
> `char :=` | any character that is not `special | ('\'` any character`) | ('\u' hex hex hex hex)`
> `hex :=` | `'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f'`
> `property :=` | a Unicode property set pattern

> Legend:

> `a := b` |  | `a` may be replaced by `b`
> `a?` |  | zero or one instance of `a`
> `a*` |  | one or more instances of `a`
> `a | b` |  | either `a` or `b`
> `'a'` |  | the literal string between the quotes

Note:

- Most UnicodeSet methods do not take a UErrorCode parameter because there are usually very few opportunities for failure other than a shortage of memory, error codes in low-level C++ string methods would be inconvenient, and the error code as the last parameter (ICU convention) would prevent the use of default parameter values. Instead, such methods set the UnicodeSet into a "bogus" state (see isBogus()) if an error occurs.

Author
  Alan Liu

Stable
  ICU 2.0

Definition at line 285 of file uniset.h.

## Member Enumeration Documentation

## anonymous enum

anonymous enum

Enumerator

MIN_VALUE

Minimum value that can be stored in a UnicodeSet.

Stable
  ICU 2.4

MAX_VALUE

Maximum value that can be stored in a UnicodeSet.

Stable
  ICU 2.4

Definition at line 358 of file uniset.h.

## ESerialization

enum icu::UnicodeSet::ESerialization

Internal
  Do not use. This API is for internal use only.

Definition at line 398 of file uniset.h.

## Constructor & Destructor Documentation

## UnicodeSet() [1/7]

icu::UnicodeSet::UnicodeSet | ( |  | ) |

Constructs an empty set.

Stable
  ICU 2.0

Referenced by add(), add(), add(), addAll(), addAll(), addMatchSetTo(), applyIntPropertyValue(), applyPattern(), applyPattern(), applyPattern(), applyPropertyAlias(), clear(), clone(), cloneAsThawed(), closeOver(), compact(), complement(), complement(), complement(), complement(), complementAll(), complementAll(), containsAll(), containsNone(), containsNone(), containsSome(), createFrom(), createFromAll(), freeze(), fromUSet(), fromUSet(), getDynamicClassID(), hashCode(), operator!=(), operator=(), operator==(), remove(), remove(), remove(), removeAll(), removeAll(), removeAllStrings(), retain(), retain(), retain(), retainAll(), retainAll(), set(), and UnicodeSet().

## UnicodeSet() [2/7]

icu::UnicodeSet::UnicodeSet | ( | UChar32 | start,
|  | UChar32 | end )

Constructs a set containing the given range.

If `end < start` then an empty set is created.

Parameters

  start | first character, inclusive, of range
  end | last character, inclusive, of range

Stable
  ICU 2.4

References end().

## UnicodeSet() [3/7]

icu::UnicodeSet::UnicodeSet | ( | const uint16_t | buffer[],
|  | int32_t | bufferLen,
|  | ESerialization | serialization,
|  | UErrorCode & | status )

Constructs a set from the output of serialize().

Parameters

  buffer | the 16 bit array
  bufferLen | the original length returned from serialize()
  serialization | the value 'kSerialized'
  status | error code

Internal
  Do not use. This API is for internal use only.

## UnicodeSet() [4/7]

icu::UnicodeSet::UnicodeSet | ( | const UnicodeString & | pattern,
|  | UErrorCode & | status )

Constructs a set from the given pattern.

See the class description for the syntax of the pattern language.

Parameters

  pattern | a string specifying what characters are in the set
  status | returns `U_ILLEGAL_ARGUMENT_ERROR` if the pattern contains a syntax error.

Stable
  ICU 2.0

## UnicodeSet() [5/7]

icu::UnicodeSet::UnicodeSet | ( | const UnicodeString & | pattern,
|  | uint32_t | options,
|  | const SymbolTable * | symbols,
|  | UErrorCode & | status )

Constructs a set from the given pattern.

See the class description for the syntax of the pattern language.

Parameters

  pattern | a string specifying what characters are in the set
  options | bitmask for options to apply to the pattern. Valid options are USET_IGNORE_SPACE and at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE. These case options are mutually exclusive.
  symbols | a symbol table mapping variable names to values and stand-in characters to UnicodeSets; may be nullptr
  status | returns `U_ILLEGAL_ARGUMENT_ERROR` if the pattern contains a syntax error.

Internal
  Do not use. This API is for internal use only.

## UnicodeSet() [6/7]

icu::UnicodeSet::UnicodeSet | ( | const UnicodeString & | pattern,
|  | ParsePosition & | pos,
|  | uint32_t | options,
|  | const SymbolTable * | symbols,
|  | UErrorCode & | status )

Constructs a set from the given pattern.

See the class description for the syntax of the pattern language.

Parameters

  pattern | a string specifying what characters are in the set
  pos | on input, the position in pattern at which to start parsing. On output, the position after the last character parsed.
  options | bitmask for options to apply to the pattern. Valid options are USET_IGNORE_SPACE and at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE. These case options are mutually exclusive.
  symbols | a symbol table mapping variable names to values and stand-in characters to UnicodeSets; may be nullptr
  status | input-output error code

Stable
  ICU 2.8

## UnicodeSet() [7/7]

icu::UnicodeSet::UnicodeSet | ( | const UnicodeSet & | o | ) |

Constructs a set that is identical to the given UnicodeSet.

Stable
  ICU 2.0

References UnicodeSet().

## ~UnicodeSet()

virtual icu::UnicodeSet::~UnicodeSet | ( |  | ) |

virtual

Destructs the set.

Stable
  ICU 2.0

## Member Function Documentation

## add() [1/3]

UnicodeSet & icu::UnicodeSet::add | ( | const UnicodeString & | s | ) |

Adds the specified multicharacter to this set if it is not already present.

If this set already contains the multicharacter, the call leaves this set unchanged. Thus "ch" => {"ch"} A frozen set will not be modified.

Parameters

  s | the source string

Returns
  this object, for chaining

Stable
  ICU 2.4

References UnicodeSet().

## add() [2/3]

UnicodeSet & icu::UnicodeSet::add | ( | UChar32 | c | ) |

Adds the specified character to this set if it is not already present.

If this set already contains the specified character, the call leaves this set unchanged. A frozen set will not be modified.

Parameters

  c | the character (code point)

Returns
  this object, for chaining

Stable
  ICU 2.0

References UnicodeSet().

## add() [3/3]

UnicodeSet & icu::UnicodeSet::add | ( | UChar32 | start,
|  | UChar32 | end )

Adds the specified range to this set if it is not already present.

If this set already contains the specified range, the call leaves this set unchanged. If `start > end` then an empty range is added, leaving the set unchanged. This is equivalent to a boolean logic OR, or a set UNION. A frozen set will not be modified.

Parameters

  start | first character, inclusive, of range to be added to this set.
  end | last character, inclusive, of range to be added to this set.

Stable
  ICU 2.0

References end(), and UnicodeSet().

Referenced by getDynamicClassID().

## addAll() [1/2]

UnicodeSet & icu::UnicodeSet::addAll | ( | const UnicodeSet & | c | ) |

Adds all of the elements in the specified set to this set if they're not already present.

This operation effectively modifies this set so that its value is the union of the two sets. The behavior of this operation is unspecified if the specified collection is modified while the operation is in progress. A frozen set will not be modified.

Parameters

  c | set whose elements are to be added to this set.

See also
  add(UChar32, UChar32)

Stable
  ICU 2.0

References UnicodeSet().

## addAll() [2/2]

UnicodeSet & icu::UnicodeSet::addAll | ( | const UnicodeString & | s | ) |

Adds each of the characters in this string to the set.

Note: "ch" => {"c", "h"} If this set already contains any particular character, it has no effect on that character. A frozen set will not be modified.

Parameters

  s | the source string

Returns
  this object, for chaining

Stable
  ICU 2.4

References UnicodeSet().

## addMatchSetTo()

virtual void icu::UnicodeSet::addMatchSetTo | ( | UnicodeSet & | toUnionTo | ) | const

override virtual

Implementation of UnicodeMatcher API.

Union the set of all characters that may be matched by this object into the given set.

Parameters

  toUnionTo | the set into which to union the source characters

Stable
  ICU 2.4

Implements icu::UnicodeMatcher.

References UnicodeSet().

## applyIntPropertyValue()

UnicodeSet & icu::UnicodeSet::applyIntPropertyValue | ( | UProperty | prop,
|  | int32_t | value,
|  | UErrorCode & | ec )

Modifies this set to contain those code points which have the given value for the given binary or enumerated property, as returned by u_getIntPropertyValue.

Prior contents of this set are lost. A frozen set will not be modified.

Parameters

  prop | a property in the range UCHAR_BIN_START..UCHAR_BIN_LIMIT-1 or UCHAR_INT_START..UCHAR_INT_LIMIT-1 or UCHAR_MASK_START..UCHAR_MASK_LIMIT-1.
  value | a value in the range u_getIntPropertyMinValue(prop).. u_getIntPropertyMaxValue(prop), with one exception. If prop is UCHAR_GENERAL_CATEGORY_MASK, then value should not be a UCharCategory, but rather a mask value produced by U_GET_GC_MASK(). This allows grouped categories such as [:L:] to be represented.
  ec | error code input/output parameter

Returns
  a reference to this set

Stable
  ICU 2.4

References UnicodeSet().

## applyPattern() [1/3]

UnicodeSet & icu::UnicodeSet::applyPattern | ( | const UnicodeString & | pattern,
|  | ParsePosition & | pos,
|  | uint32_t | options,
|  | const SymbolTable * | symbols,
|  | UErrorCode & | status )

Parses the given pattern, starting at the given position.

The character at pattern.charAt(pos.getIndex()) must be '[', or the parse fails. Parsing continues until the corresponding closing ']'. If a syntax error is encountered between the opening and closing brace, the parse fails. Upon return from a successful parse, the ParsePosition is updated to point to the character following the closing ']', and a StringBuffer containing a pairs list for the parsed pattern is returned. This method calls itself recursively to parse embedded subpatterns. Empties the set passed before applying the pattern. A frozen set will not be modified.

Parameters

  pattern | the string containing the pattern to be parsed. The portion of the string from pos.getIndex(), which must be a '[', to the corresponding closing ']', is parsed.
  pos | upon entry, the position at which to being parsing. The character at pattern.charAt(pos.getIndex()) must be a '['. Upon return from a successful parse, pos.getIndex() is either the character after the closing ']' of the parsed pattern, or pattern.length() if the closing ']' is the last character of the pattern string.
  options | bitmask for options to apply to the pattern. Valid options are USET_IGNORE_SPACE and at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE. These case options are mutually exclusive.
  symbols | a symbol table mapping variable names to values and stand-ins to UnicodeSets; may be nullptr
  status | returns `U_ILLEGAL_ARGUMENT_ERROR` if the pattern contains a syntax error.

Returns
  a reference to this

Stable
  ICU 2.8

References UnicodeSet().

## applyPattern() [2/3]

UnicodeSet & icu::UnicodeSet::applyPattern | ( | const UnicodeString & | pattern,
|  | UErrorCode & | status )

Modifies this set to represent the set specified by the given pattern, ignoring Unicode Pattern_White_Space characters.

See the class description for the syntax of the pattern language. A frozen set will not be modified.

Parameters

  pattern | a string specifying what characters are in the set
  status | returns `U_ILLEGAL_ARGUMENT_ERROR` if the pattern contains a syntax error. Empties the set passed before applying the pattern.

Returns
  a reference to this

Stable
  ICU 2.0

References UnicodeSet().

Referenced by getDynamicClassID().

## applyPattern() [3/3]

UnicodeSet & icu::UnicodeSet::applyPattern | ( | const UnicodeString & | pattern,
|  | uint32_t | options,
|  | const SymbolTable * | symbols,
|  | UErrorCode & | status )

Modifies this set to represent the set specified by the given pattern, optionally ignoring Unicode Pattern_White_Space characters.

See the class description for the syntax of the pattern language. A frozen set will not be modified.

Parameters

  pattern | a string specifying what characters are in the set
  options | bitmask for options to apply to the pattern. Valid options are USET_IGNORE_SPACE and at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE. These case options are mutually exclusive.
  symbols | a symbol table mapping variable names to values and stand-ins to UnicodeSets; may be nullptr
  status | returns `U_ILLEGAL_ARGUMENT_ERROR` if the pattern contains a syntax error. Empties the set passed before applying the pattern.

Returns
  a reference to this

Internal
  Do not use. This API is for internal use only.

References UnicodeSet().

## applyPropertyAlias()

UnicodeSet & icu::UnicodeSet::applyPropertyAlias | ( | const UnicodeString & | prop,
|  | const UnicodeString & | value,
|  | UErrorCode & | ec )

Modifies this set to contain those code points which have the given value for the given property.

Prior contents of this set are lost. A frozen set will not be modified.

Parameters

  prop | a property alias, either short or long. The name is matched loosely. See PropertyAliases.txt for names and a description of loose matching. If the value string is empty, then this string is interpreted as either a General_Category value alias, a Script value alias, a binary property alias, or a special ID. Special IDs are matched loosely and correspond to the following sets:

"ANY" = [\u0000-\U0010FFFF], "ASCII" = [\u0000-\u007F], "Assigned" = [:^Cn:].

Parameters

  value | a value alias, either short or long. The name is matched loosely. See PropertyValueAliases.txt for names and a description of loose matching. In addition to aliases listed, numeric values and canonical combining classes may be expressed numerically, e.g., ("nv", "0.5") or ("ccc", "220"). The value string may also be empty.
  ec | error code input/output parameter

Returns
  a reference to this set

Stable
  ICU 2.4

References UnicodeSet().

## begin()

U_HEADER_NESTED_NAMESPACE::USetElementIterator icu::UnicodeSet::begin | ( |  | ) | const

inline

Returns a C++ iterator for iterating over all of the elements of this set.

Convenient all-in one iteration, but creates a std::u16string for each code point or string. (Similar to how Java UnicodeSet is an Iterable<String>.)

Code points are returned first, then empty and multi-character strings.

UnicodeSet set(u"[abcçカ🚴{}{abc}{de}]", errorCode);
for (auto el : set) {
UnicodeString us(el);
std::string u8;
printf("set.element length %ld \"%s\"\n", (long)us.length(), us.toUTF8String(u8).c_str());
}
icu::UnicodeSet::UnicodeSet
UnicodeSet()
Constructs an empty set.
icu::UnicodeSet::set
UnicodeSet & set(UChar32 start, UChar32 end)
Make this object represent the range start - end.
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:303

Returns
  an all-elements iterator.

Draft
  This API may be changed in the future versions and was introduced in ICU 77

See also
  end
  codePoints
  ranges
  strings

Definition at line 1201 of file uniset.h.

References toUSet().

## charAt()

UChar32 icu::UnicodeSet::charAt | ( | int32_t | index | ) | const

Returns the character at the given index within this set, where the set is ordered by ascending code point.

If the index is out of range for characters, returns (UChar32)-1. The inverse of this method is `indexOf()`.

For iteration, this is slower than UnicodeSetIterator or getRangeCount()/getRangeStart()/getRangeEnd(), because for each call it skips linearly over `index` characters in the ranges.

Parameters

  index | an index from 0..size()-1

Returns
  the character at the given index, or (UChar32)-1.

Stable
  ICU 2.4

## clear()

UnicodeSet & icu::UnicodeSet::clear | ( |  | ) |

Removes all of the elements from this set.

This set will be empty after this call returns. A frozen set will not be modified.

Stable
  ICU 2.0

References UnicodeSet().

## clone()

virtual UnicodeSet * icu::UnicodeSet::clone | ( |  | ) | const

override virtual

Returns a copy of this object.

All UnicodeFunctor objects have to support cloning in order to allow classes using UnicodeFunctors, such as Transliterator, to implement cloning. If this set is frozen, then the clone will be frozen as well. Use cloneAsThawed() for a mutable clone of a frozen set.

See also
  cloneAsThawed

Stable
  ICU 2.0

Implements icu::UnicodeFilter.

References UnicodeSet().

## cloneAsThawed()

UnicodeSet * icu::UnicodeSet::cloneAsThawed | ( |  | ) | const

Clone the set and make the clone mutable.

See the ICU4J Freezable interface for details.

Returns
  the mutable clone

See also
  freeze
  isFrozen

Stable
  ICU 3.8

References UnicodeSet().

## closeOver()

UnicodeSet & icu::UnicodeSet::closeOver | ( | int32_t | attribute | ) |

Close this set over the given attribute.

For the attribute USET_CASE_INSENSITIVE, the result is to modify this set so that:

1. For each character or string 'a' in this set, all strings or characters 'b' such that foldCase(a) == foldCase(b) are added to this set.
2. For each string 'e' in the resulting set, if e != foldCase(e), 'e' will be removed.

Example: [aq\u00DF{Bc}{bC}{Fi}] => [aAqQ\u00DF\uFB01{ss}{bc}{fi}]

(Here foldCase(x) refers to the operation u_strFoldCase, and a == b denotes that the contents are the same, not pointer comparison.)

A frozen set will not be modified.

Parameters

  attribute | bitmask for attributes to close over. Valid options: At most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE. These case options are mutually exclusive. Unrelated options bits are ignored.

Returns
  a reference to this set.

Stable
  ICU 4.2

References UnicodeSet().

## codePoints()

U_HEADER_NESTED_NAMESPACE::USetCodePoints icu::UnicodeSet::codePoints | ( |  | ) | const

inline

Returns a C++ "range" for iterating over the code points of this set.

UnicodeSet set(u"[abcçカ🚴]", errorCode);
for (UChar32 c : set.codePoints()) {
printf("set.codePoint U+%04lx\n", (long)c);
}
UChar32
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition umachine.h:449

Returns
  a "range" object for iterating over the code points of this set.

Stable
  ICU 76

See also
  ranges
  strings
  begin
  end

Definition at line 1122 of file uniset.h.

References toUSet().

## compact()

UnicodeSet & icu::UnicodeSet::compact | ( |  | ) |

Reallocate this objects internal structures to take up the least possible space, without changing this object's value.

A frozen set will not be modified.

Stable
  ICU 2.4

References UnicodeSet().

## complement() [1/4]

UnicodeSet & icu::UnicodeSet::complement | ( |  | ) |

This is equivalent to `complement(MIN_VALUE, MAX_VALUE)`.

Note: This performs a symmetric difference with all code points and thus retains all multicharacter strings. In order to achieve a “code point complement” (all code points minus this set), the easiest is to `.complement().removeAllStrings()`.

A frozen set will not be modified.

Stable
  ICU 2.0

References UnicodeSet().

## complement() [2/4]

UnicodeSet & icu::UnicodeSet::complement | ( | const UnicodeString & | s | ) |

Complement the specified string in this set.

The string will be removed if it is in this set, or will be added if it is not in this set. A frozen set will not be modified.

Parameters

  s | the string to complement

Returns
  this object, for chaining

Stable
  ICU 2.4

References UnicodeSet().

## complement() [3/4]

UnicodeSet & icu::UnicodeSet::complement | ( | UChar32 | c | ) |

Complements the specified character in this set.

The character will be removed if it is in this set, or will be added if it is not in this set. A frozen set will not be modified.

Parameters

  c | the character (code point)

Returns
  this object, for chaining

Stable
  ICU 2.0

References UnicodeSet().

## complement() [4/4]

UnicodeSet & icu::UnicodeSet::complement | ( | UChar32 | start,
|  | UChar32 | end )

Complements the specified range in this set.

Any character in the range will be removed if it is in this set, or will be added if it is not in this set. If `start > end` then an empty range is complemented, leaving the set unchanged. This is equivalent to a boolean logic XOR. A frozen set will not be modified.

Parameters

  start | first character, inclusive, of range
  end | last character, inclusive, of range

Stable
  ICU 2.0

References end(), and UnicodeSet().

## complementAll() [1/2]

UnicodeSet & icu::UnicodeSet::complementAll | ( | const UnicodeSet & | c | ) |

Complements in this set all elements contained in the specified set.

Any character in the other set will be removed if it is in this set, or will be added if it is not in this set. A frozen set will not be modified.

Parameters

  c | set that defines which elements will be xor'ed from this set.

Stable
  ICU 2.4

References UnicodeSet().

## complementAll() [2/2]

UnicodeSet & icu::UnicodeSet::complementAll | ( | const UnicodeString & | s | ) |

Complement EACH of the characters in this string.

Note: "ch" == {"c", "h"} A frozen set will not be modified.

Parameters

  s | the source string

Returns
  this object, for chaining

Stable
  ICU 2.4

References UnicodeSet().

## contains() [1/3]

UBool icu::UnicodeSet::contains | ( | const UnicodeString & | s | ) | const

Returns true if this set contains the given multicharacter string.

Parameters

  s | string to be checked for containment

Returns
  true if this set contains the specified string

Stable
  ICU 2.4

## contains() [2/3]

virtual UBool icu::UnicodeSet::contains | ( | UChar32 | c | ) | const

override virtual

Returns true if this set contains the given character.

This function works faster with a frozen set.

Parameters

  c | character to be checked for containment

Returns
  true if the test condition is met

Stable
  ICU 2.0

Implements icu::UnicodeFilter.

## contains() [3/3]

UBool icu::UnicodeSet::contains | ( | UChar32 | start,
|  | UChar32 | end ) const

Returns true if this set contains every character of the given range.

Parameters

  start | first character, inclusive, of the range
  end | last character, inclusive, of the range

Returns
  true if the test condition is met

Stable
  ICU 2.0

References end().

## containsAll() [1/2]

UBool icu::UnicodeSet::containsAll | ( | const UnicodeSet & | c | ) | const

Returns true if this set contains all the characters and strings of the given set.

Parameters

  c | set to be checked for containment

Returns
  true if the test condition is met

Stable
  ICU 2.4

References UnicodeSet().

## containsAll() [2/2]

UBool icu::UnicodeSet::containsAll | ( | const UnicodeString & | s | ) | const

Returns true if this set contains all the characters of the given string.

Parameters

  s | string containing characters to be checked for containment

Returns
  true if the test condition is met

Stable
  ICU 2.4

## containsNone() [1/3]

UBool icu::UnicodeSet::containsNone | ( | const UnicodeSet & | c | ) | const

Returns true if this set contains none of the characters and strings of the given set.

Parameters

  c | set to be checked for containment

Returns
  true if the test condition is met

Stable
  ICU 2.4

References UnicodeSet().

## containsNone() [2/3]

UBool icu::UnicodeSet::containsNone | ( | const UnicodeString & | s | ) | const

Returns true if this set contains none of the characters of the given string.

Parameters

  s | string containing characters to be checked for containment

Returns
  true if the test condition is met

Stable
  ICU 2.4

References containsSome(), end(), and UnicodeSet().

## containsNone() [3/3]

UBool icu::UnicodeSet::containsNone | ( | UChar32 | start,
|  | UChar32 | end ) const

Returns true if this set contains none of the characters of the given range.

Parameters

  start | first character, inclusive, of the range
  end | last character, inclusive, of the range

Returns
  true if the test condition is met

Stable
  ICU 2.4

References end().

Referenced by containsSome(), containsSome(), and containsSome().

## containsSome() [1/3]

UBool icu::UnicodeSet::containsSome | ( | const UnicodeSet & | s | ) | const

inline

Returns true if this set contains one or more of the characters and strings of the given set.

Parameters

  s | The set to be checked for containment

Returns
  true if the condition is met

Stable
  ICU 2.4

Definition at line 1854 of file uniset.h.

References containsNone(), containsSome(), and UnicodeSet().

## containsSome() [2/3]

UBool icu::UnicodeSet::containsSome | ( | const UnicodeString & | s | ) | const

inline

Returns true if this set contains one or more of the characters of the given string.

Parameters

  s | string containing characters to be checked for containment

Returns
  true if the condition is met

Stable
  ICU 2.4

Definition at line 1858 of file uniset.h.

References containsNone(), and containsSome().

## containsSome() [3/3]

UBool icu::UnicodeSet::containsSome | ( | UChar32 | start,
|  | UChar32 | end ) const

inline

Returns true if this set contains one or more of the characters in the given range.

Parameters

  start | first character, inclusive, of the range
  end | last character, inclusive, of the range

Returns
  true if the condition is met

Stable
  ICU 2.4

Definition at line 1850 of file uniset.h.

References containsNone(), containsSome(), and end().

Referenced by containsNone(), containsSome(), containsSome(), and containsSome().

## createFrom()

UnicodeSet * icu::UnicodeSet::createFrom | ( | const UnicodeString & | s | ) |

static

Makes a set from a multicharacter string.

Thus "ch" => {"ch"}

Parameters

  s | the source string

Returns
  a newly created set containing the given string. The caller owns the return object and is responsible for deleting it.

Stable
  ICU 2.4

References UnicodeSet().

## createFromAll()

UnicodeSet * icu::UnicodeSet::createFromAll | ( | const UnicodeString & | s | ) |

static

Makes a set from each of the characters in the string.

Thus "ch" => {"c", "h"}

Parameters

  s | the source string

Returns
  a newly created set containing the given characters The caller owns the return object and is responsible for deleting it.

Stable
  ICU 2.4

References UnicodeSet().

## end()

U_HEADER_NESTED_NAMESPACE::USetElementIterator icu::UnicodeSet::end | ( |  | ) | const

inline

Returns
  an exclusive-end sentinel for iterating over all of the elements of this set.

Draft
  This API may be changed in the future versions and was introduced in ICU 77

See also
  begin
  codePoints
  ranges
  strings

Definition at line 1213 of file uniset.h.

References toUSet().

Referenced by add(), complement(), contains(), containsNone(), containsNone(), containsSome(), getDynamicClassID(), remove(), retain(), set(), and UnicodeSet().

## freeze()

UnicodeSet * icu::UnicodeSet::freeze | ( |  | ) |

Freeze the set (make it immutable).

Once frozen, it cannot be unfrozen and is therefore thread-safe until it is deleted. See the ICU4J Freezable interface for details. Freezing the set may also make some operations faster, for example contains() and span(). A frozen set will not be modified. (It remains frozen.)

Returns
  this set.

See also
  isFrozen
  cloneAsThawed

Stable
  ICU 3.8

References UnicodeSet().

## fromUSet() [1/2]

const UnicodeSet * icu::UnicodeSet::fromUSet | ( | const USet * | uset | ) |

inline static

Get a UnicodeSet pointer from a const USet.

Parameters

  uset | a const USet (the ICU plain C type for UnicodeSet)

Returns
  the corresponding UnicodeSet pointer.

Stable
  ICU 4.2

Definition at line 1870 of file uniset.h.

References fromUSet(), and UnicodeSet().

## fromUSet() [2/2]

UnicodeSet * icu::UnicodeSet::fromUSet | ( | USet * | uset | ) |

inline static

Get a UnicodeSet pointer from a USet.

Parameters

  uset | a USet (the ICU plain C type for UnicodeSet)

Returns
  the corresponding UnicodeSet pointer.

Stable
  ICU 4.2

Definition at line 1866 of file uniset.h.

References fromUSet(), and UnicodeSet().

Referenced by fromUSet(), fromUSet(), and hashCode().

## getDynamicClassID()

virtual UClassID icu::UnicodeSet::getDynamicClassID | ( |  | ) | const

override virtual

Implement UnicodeFunctor API.

Returns
  The class ID for this object. All objects of a given class have the same class ID. Objects of other classes have different class IDs.

Stable
  ICU 2.4

Implements icu::UnicodeFunctor.

References add(), applyPattern(), end(), retain(), and UnicodeSet().

## getRangeCount()

int32_t icu::UnicodeSet::getRangeCount | ( |  | ) | const

Iteration method that returns the number of ranges contained in this set.

See also
  getRangeStart
  getRangeEnd

Stable
  ICU 2.4

## getRangeEnd()

UChar32 icu::UnicodeSet::getRangeEnd | ( | int32_t | index | ) | const

Iteration method that returns the last character in the specified range of this set.

See also
  getRangeStart
  getRangeEnd

Stable
  ICU 2.4

## getRangeStart()

UChar32 icu::UnicodeSet::getRangeStart | ( | int32_t | index | ) | const

Iteration method that returns the first character in the specified range of this set.

See also
  getRangeCount
  getRangeEnd

Stable
  ICU 2.4

## getStaticClassID()

UClassID icu::UnicodeSet::getStaticClassID | ( |  | ) |

static

Return the class ID for this class.

This is useful only for comparing to a return value from getDynamicClassID(). For example:

    .      Base* polymorphic_pointer = createPolymorphicObject();
    .      if (polymorphic_pointer->getDynamicClassID() ==
    .          Derived::getStaticClassID()) ...

Returns
  The class ID for all objects of this class.

Stable
  ICU 2.0

## hashCode()

int32_t icu::UnicodeSet::hashCode | ( |  | ) | const

Returns the hash code value for this set.

Returns
  the hash code value for this set.

See also
  Object#hashCode()

Stable
  ICU 2.0

References fromUSet(), isFrozen(), toUSet(), and UnicodeSet().

## hasStrings()

UBool icu::UnicodeSet::hasStrings | ( |  | ) | const

Returns
  true if this set contains multi-character strings or the empty string.

Stable
  ICU 70

## indexOf()

int32_t icu::UnicodeSet::indexOf | ( | UChar32 | c | ) | const

Returns the index of the given character within this set, where the set is ordered by ascending code point.

If the character is not in this set, return -1. The inverse of this method is `charAt()`.

Returns
  an index from 0..size()-1, or -1

Stable
  ICU 2.4

## isBogus()

UBool icu::UnicodeSet::isBogus | ( |  | ) | const

inline

Determine if this object contains a valid set.

A bogus set has no value. It is different from an empty set. It can be used to indicate that no set value is available.

Returns
  true if the set is bogus/invalid, false otherwise

See also
  setToBogus()

Stable
  ICU 4.0

Definition at line 1862 of file uniset.h.

References isBogus().

Referenced by isBogus().

## isEmpty()

UBool icu::UnicodeSet::isEmpty | ( |  | ) | const

Returns true if this set contains no elements.

Returns
  true if this set contains no elements.

Stable
  ICU 2.0

## isFrozen()

UBool icu::UnicodeSet::isFrozen | ( |  | ) | const

inline

Determines whether the set has been frozen (made immutable) or not.

See the ICU4J Freezable interface for details.

Returns
  true/false for whether the set has been frozen

See also
  freeze
  cloneAsThawed

Stable
  ICU 3.8

Definition at line 1846 of file uniset.h.

References isFrozen().

Referenced by hashCode(), and isFrozen().

## matches()

UMatchDegree icu::UnicodeSet::matches | ( | const Replaceable & | text,
|  | int32_t & | offset,
|  | int32_t | limit,
|  | UBool | incremental )

override virtual

Implement UnicodeMatcher::matches().

Stable
  ICU 2.4

Reimplemented from icu::UnicodeFilter.

## operator!=()

bool icu::UnicodeSet::operator!= | ( | const UnicodeSet & | o | ) | const

inline

Compares the specified object with this set for equality.

Returns true if the specified set is not equal to this set.

Stable
  ICU 2.0

Definition at line 1842 of file uniset.h.

References operator!=(), operator==(), and UnicodeSet().

Referenced by operator!=().

## operator=()

UnicodeSet & icu::UnicodeSet::operator= | ( | const UnicodeSet & | o | ) |

Assigns this object to be a copy of another.

A frozen set will not be modified.

Stable
  ICU 2.0

References UnicodeSet().

## operator==()

bool icu::UnicodeSet::operator== | ( | const UnicodeSet & | o | ) | const

Compares the specified object with this set for equality.

Returns true if the two sets have the same size, and every member of the specified set is contained in this set (or equivalently, every member of this set is contained in the specified set).

Parameters

  o | set to be compared for equality with this set.

Returns
  true if the specified set is equal to this set.

Stable
  ICU 2.0

References UnicodeSet().

Referenced by operator!=().

## ranges()

U_HEADER_NESTED_NAMESPACE::USetRanges icu::UnicodeSet::ranges | ( |  | ) | const

inline

Returns a C++ "range" for iterating over the code point ranges of this set.

UnicodeSet set(u"[abcçカ🚴]", errorCode);
for (auto [start, end] : set.ranges()) {
printf("set.range U+%04lx..U+%04lx\n", (long)start, (long)end);
}
for (auto range : set.ranges()) {
for (UChar32 c : range) {
printf("set.range.c U+%04lx\n", (long)c);
}
}
icu::UnicodeSet::end
U_HEADER_NESTED_NAMESPACE::USetElementIterator end() const
Definition uniset.h:1213
icu::UnicodeSet::ranges
U_HEADER_NESTED_NAMESPACE::USetRanges ranges() const
Returns a C++ "range" for iterating over the code point ranges of this set.
Definition uniset.h:1148

Returns
  a "range" object for iterating over the code point ranges of this set.

Stable
  ICU 76

See also
  codePoints
  strings
  begin
  end

Definition at line 1148 of file uniset.h.

References toUSet().

## remove() [1/3]

UnicodeSet & icu::UnicodeSet::remove | ( | const UnicodeString & | s | ) |

Removes the specified string from this set if it is present.

The set will not contain the specified character once the call returns. A frozen set will not be modified.

Parameters

  s | the source string

Returns
  this object, for chaining

Stable
  ICU 2.4

References UnicodeSet().

## remove() [2/3]

UnicodeSet & icu::UnicodeSet::remove | ( | UChar32 | c | ) |

Removes the specified character from this set if it is present.

The set will not contain the specified range once the call returns. A frozen set will not be modified.

Parameters

  c | the character (code point)

Returns
  this object, for chaining

Stable
  ICU 2.0

References UnicodeSet().

## remove() [3/3]

UnicodeSet & icu::UnicodeSet::remove | ( | UChar32 | start,
|  | UChar32 | end )

Removes the specified range from this set if it is present.

The set will not contain the specified range once the call returns. If `start > end` then an empty range is removed, leaving the set unchanged. A frozen set will not be modified.

Parameters

  start | first character, inclusive, of range to be removed from this set.
  end | last character, inclusive, of range to be removed from this set.

Stable
  ICU 2.0

References end(), and UnicodeSet().

## removeAll() [1/2]

UnicodeSet & icu::UnicodeSet::removeAll | ( | const UnicodeSet & | c | ) |

Removes from this set all of its elements that are contained in the specified set.

This operation effectively modifies this set so that its value is the asymmetric set difference of the two sets. A frozen set will not be modified.

Parameters

  c | set that defines which elements will be removed from this set.

Stable
  ICU 2.0

References UnicodeSet().

## removeAll() [2/2]

UnicodeSet & icu::UnicodeSet::removeAll | ( | const UnicodeString & | s | ) |

Remove EACH of the characters in this string.

Note: "ch" == {"c", "h"} A frozen set will not be modified.

Parameters

  s | the source string

Returns
  this object, for chaining

Stable
  ICU 2.4

References UnicodeSet().

## removeAllStrings()

UnicodeSet & icu::UnicodeSet::removeAllStrings | ( |  | ) |

Remove all strings from this set.

Returns
  a reference to this set.

Stable
  ICU 4.2

References UnicodeSet().

## resemblesPattern()

UBool icu::UnicodeSet::resemblesPattern | ( | const UnicodeString & | pattern,
|  | int32_t | pos )

static

Return true if the given position, in the given pattern, appears to be the start of a UnicodeSet pattern.

Stable
  ICU 2.4

## retain() [1/3]

UnicodeSet & icu::UnicodeSet::retain | ( | const UnicodeString & | s | ) |

Retains only the specified string from this set if it is present.

Upon return this set will be empty if it did not contain s, or will only contain s if it did contain s. A frozen set will not be modified.

Parameters

  s | the source string

Returns
  this object, for chaining

Stable
  ICU 69

References UnicodeSet().

## retain() [2/3]

UnicodeSet & icu::UnicodeSet::retain | ( | UChar32 | c | ) |

Retain the specified character from this set if it is present.

A frozen set will not be modified.

Parameters

  c | the character (code point)

Returns
  this object, for chaining

Stable
  ICU 2.0

References UnicodeSet().

## retain() [3/3]

UnicodeSet & icu::UnicodeSet::retain | ( | UChar32 | start,
|  | UChar32 | end )

Retain only the elements in this set that are contained in the specified range.

If `start > end` then an empty range is retained, leaving the set empty. This is equivalent to a boolean logic AND, or a set INTERSECTION. A frozen set will not be modified.

Parameters

  start | first character, inclusive, of range
  end | last character, inclusive, of range

Stable
  ICU 2.0

References end(), and UnicodeSet().

Referenced by getDynamicClassID().

## retainAll() [1/2]

UnicodeSet & icu::UnicodeSet::retainAll | ( | const UnicodeSet & | c | ) |

Retains only the elements in this set that are contained in the specified set.

In other words, removes from this set all of its elements that are not contained in the specified set. This operation effectively modifies this set so that its value is the intersection of the two sets. A frozen set will not be modified.

Parameters

  c | set that defines which elements this set will retain.

Stable
  ICU 2.0

References UnicodeSet().

## retainAll() [2/2]

UnicodeSet & icu::UnicodeSet::retainAll | ( | const UnicodeString & | s | ) |

Retains EACH of the characters in this string.

Note: "ch" == {"c", "h"} A frozen set will not be modified.

Parameters

  s | the source string

Returns
  this object, for chaining

Stable
  ICU 2.4

References UnicodeSet().

## serialize()

int32_t icu::UnicodeSet::serialize | ( | uint16_t * | dest,
|  | int32_t | destCapacity,
|  | UErrorCode & | ec ) const

Serializes this set into an array of 16-bit integers.

Serialization (currently) only records the characters in the set; multicharacter strings are ignored.

The array has following format (each line is one 16-bit integer):

length = (n+2*m) | (m!=0?0x8000:0) bmpLength = n; present if m!=0 bmp[0] bmp[1] ... bmp[n-1] supp-high[0] supp-low[0] supp-high[1] supp-low[1] ... supp-high[m-1] supp-low[m-1]

The array starts with a header. After the header are n bmp code points, then m supplementary code points. Either n or m or both may be zero. n+2*m is always <= 0x7FFF.

If there are no supplementary characters (if m==0) then the header is one 16-bit integer, 'length', with value n.

If there are supplementary characters (if m!=0) then the header is two 16-bit integers. The first, 'length', has value (n+2*m)|0x8000. The second, 'bmpLength', has value n.

After the header the code points are stored in ascending order. Supplementary code points are stored as most significant 16 bits followed by least significant 16 bits.

Parameters

  dest | pointer to buffer of destCapacity 16-bit integers. May be nullptr only if destCapacity is zero.
  destCapacity | size of dest, or zero. Must not be negative.
  ec | error code. Will be set to U_INDEX_OUTOFBOUNDS_ERROR if n+2*m > 0x7FFF. Will be set to U_BUFFER_OVERFLOW_ERROR if n+2*m+(m!=0?2:1) > destCapacity.

Returns
  the total length of the serialized format, including the header, that is, n+2*m+(m!=0?2:1), or 0 on error other than U_BUFFER_OVERFLOW_ERROR.

Stable
  ICU 2.4

## set()

UnicodeSet & icu::UnicodeSet::set | ( | UChar32 | start,
|  | UChar32 | end )

Make this object represent the range start - end.

If start > end then this object is set to an empty range. A frozen set will not be modified.

Parameters

  start | first character in the set, inclusive
  end | last character in the set, inclusive

Stable
  ICU 2.4

References end(), and UnicodeSet().

## setToBogus()

void icu::UnicodeSet::setToBogus | ( |  | ) |

Make this UnicodeSet object invalid.

The string will test true with isBogus().

A bogus set has no value. It is different from an empty set. It can be used to indicate that no set value is available.

This utility function is used throughout the UnicodeSet implementation to indicate that a UnicodeSet operation failed, and may be used in other functions, especially but not exclusively when such functions do not take a UErrorCode for simplicity.

See also
  isBogus()

Stable
  ICU 4.0

## size()

int32_t icu::UnicodeSet::size | ( |  | ) | const

Returns the number of elements in this set (its cardinality).

Note than the elements of a set may include both individual codepoints and strings.

This is slower than getRangeCount() because it counts the code points of all ranges.

Returns
  the number of elements in this set (its cardinality).

Stable
  ICU 2.0

See also
  getRangeCount

## span() [1/2]

int32_t icu::UnicodeSet::span | ( | const char16_t * | s,
|  | int32_t | length,
|  | USetSpanCondition | spanCondition ) const

Returns the length of the initial substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).

See USetSpanCondition for details. Similar to the strspn() C library function. Unpaired surrogates are treated according to contains() of their surrogate code points. This function works faster with a frozen set and with a non-negative string length argument.

Parameters

  s | start of the string
  length | of the string; can be -1 for NUL-terminated
  spanCondition | specifies the containment condition

Returns
  the length of the initial substring according to the spanCondition; 0 if the start of the string does not fit the spanCondition

Stable
  ICU 3.8

See also
  USetSpanCondition

References span().

Referenced by span(), and span().

## span() [2/2]

int32_t icu::UnicodeSet::span | ( | const UnicodeString & | s,
|  | int32_t | start,
|  | USetSpanCondition | spanCondition ) const

inline

Returns the end of the substring of the input string according to the USetSpanCondition.

Same as `start+span(s.getBuffer()+start, s.length()-start, spanCondition)` after pinning start to 0<=start<=s.length().

Parameters

  s | the string
  start | the start index in the string for the span operation
  spanCondition | specifies the containment condition

Returns
  the exclusive end of the substring according to the spanCondition; the substring s.tempSubStringBetween(start, end) fulfills the spanCondition

Stable
  ICU 4.4

See also
  USetSpanCondition

Definition at line 1882 of file uniset.h.

References icu::UnicodeString::getBuffer(), icu::UnicodeString::length(), and span().

## spanBack() [1/2]

int32_t icu::UnicodeSet::spanBack | ( | const char16_t * | s,
|  | int32_t | length,
|  | USetSpanCondition | spanCondition ) const

Returns the start of the trailing substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).

See USetSpanCondition for details. Unpaired surrogates are treated according to contains() of their surrogate code points. This function works faster with a frozen set and with a non-negative string length argument.

Parameters

  s | start of the string
  length | of the string; can be -1 for NUL-terminated
  spanCondition | specifies the containment condition

Returns
  the start of the trailing substring according to the spanCondition; the string length if the end of the string does not fit the spanCondition

Stable
  ICU 3.8

See also
  USetSpanCondition

References spanBack().

Referenced by spanBack(), and spanBack().

## spanBack() [2/2]

int32_t icu::UnicodeSet::spanBack | ( | const UnicodeString & | s,
|  | int32_t | limit,
|  | USetSpanCondition | spanCondition ) const

inline

Returns the start of the substring of the input string according to the USetSpanCondition.

Same as `spanBack(s.getBuffer(), limit, spanCondition)` after pinning limit to 0<=end<=s.length().

Parameters

  s | the string
  limit | the exclusive-end index in the string for the span operation (use s.length() or INT32_MAX for spanning back from the end of the string)
  spanCondition | specifies the containment condition

Returns
  the start of the substring according to the spanCondition; the substring s.tempSubStringBetween(start, limit) fulfills the spanCondition

Stable
  ICU 4.4

See also
  USetSpanCondition

Definition at line 1892 of file uniset.h.

References icu::UnicodeString::getBuffer(), icu::UnicodeString::length(), and spanBack().

## spanBackUTF8()

int32_t icu::UnicodeSet::spanBackUTF8 | ( | const char * | s,
|  | int32_t | length,
|  | USetSpanCondition | spanCondition ) const

Returns the start of the trailing substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).

See USetSpanCondition for details. Malformed byte sequences are treated according to contains(0xfffd). This function works faster with a frozen set and with a non-negative string length argument.

Parameters

  s | start of the string (UTF-8)
  length | of the string; can be -1 for NUL-terminated
  spanCondition | specifies the containment condition

Returns
  the start of the trailing substring according to the spanCondition; the string length if the end of the string does not fit the spanCondition

Stable
  ICU 3.8

See also
  USetSpanCondition

## spanUTF8()

int32_t icu::UnicodeSet::spanUTF8 | ( | const char * | s,
|  | int32_t | length,
|  | USetSpanCondition | spanCondition ) const

Returns the length of the initial substring of the input string which consists only of characters and strings that are contained in this set (USET_SPAN_CONTAINED, USET_SPAN_SIMPLE), or only of characters and strings that are not contained in this set (USET_SPAN_NOT_CONTAINED).

See USetSpanCondition for details. Similar to the strspn() C library function. Malformed byte sequences are treated according to contains(0xfffd). This function works faster with a frozen set and with a non-negative string length argument.

Parameters

  s | start of the string (UTF-8)
  length | of the string; can be -1 for NUL-terminated
  spanCondition | specifies the containment condition

Returns
  the length of the initial substring according to the spanCondition; 0 if the start of the string does not fit the spanCondition

Stable
  ICU 3.8

See also
  USetSpanCondition

## strings()

U_HEADER_NESTED_NAMESPACE::USetStrings icu::UnicodeSet::strings | ( |  | ) | const

inline

Returns a C++ "range" for iterating over the empty and multi-character strings of this set.

Returns each string as a std::u16string_view without copying its contents.

UnicodeSet set(u"[abcçカ🚴{}{abc}{de}]", errorCode);
for (auto s : set.strings()) {
UnicodeString us(s);
std::string u8;
printf("set.string length %ld \"%s\"\n", (long)s.length(), us.toUTF8String(u8).c_str());
}

Returns
  a "range" object for iterating over the strings of this set.

Stable
  ICU 76

See also
  codePoints
  ranges
  begin
  end

Definition at line 1172 of file uniset.h.

References toUSet().

## toPattern()

virtual UnicodeString & icu::UnicodeSet::toPattern | ( | UnicodeString & | result,
|  | UBool | escapeUnprintable = false ) const

override virtual

Returns a string representation of this set.

If the result of calling this function is passed to a UnicodeSet constructor, it will produce another set that is equal to this one. A frozen set will not be modified.

Parameters

  result | the string to receive the rules. Previous contents will be deleted.
  escapeUnprintable | if true then convert unprintable character to their hex escape representations, \uxxxx or \Uxxxxxxxx. Unprintable characters are those other than U+000A, U+0020..U+007E.

Stable
  ICU 2.0

Implements icu::UnicodeMatcher.

## toUSet() [1/2]

USet * icu::UnicodeSet::toUSet | ( |  | ) |

inline

Produce a USet * pointer for this UnicodeSet.

USet is the plain C type for UnicodeSet

Returns
  a USet pointer for this UnicodeSet

Stable
  ICU 4.2

Definition at line 1874 of file uniset.h.

References toUSet().

Referenced by begin(), codePoints(), end(), hashCode(), ranges(), strings(), toUSet(), and toUSet().

## toUSet() [2/2]

const USet * icu::UnicodeSet::toUSet | ( |  | ) | const

inline

Produce a const USet * pointer for this UnicodeSet.

USet is the plain C type for UnicodeSet

Returns
  a const USet pointer for this UnicodeSet

Stable
  ICU 4.2

Definition at line 1878 of file uniset.h.

References toUSet().

## Friends And Related Symbol Documentation

## RBBIRuleScanner

friend class RBBIRuleScanner

friend

Definition at line 1679 of file uniset.h.

## UnicodeSetIterator

friend class UnicodeSetIterator

friend

Definition at line 1837 of file uniset.h.

## USetAccess

friend class USetAccess

friend

Definition at line 1661 of file uniset.h.

The documentation for this class was generated from the following file:

- common/unicode/uniset.h