Package net.sf.saxon.str
Class SegmentedString
java.lang.Object
net.sf.saxon.str.UnicodeString
net.sf.saxon.str.SegmentedString
- All Implemented Interfaces:
Comparable<UnicodeString>,AtomicMatchKey
A SegmentedString is an implementation of UnicodeString that comprises an array
of segments representing substrings of the total string; all segments except the
last have the same length in codepoints, so indexing is straightforward.
Unlike the ZenoString, this structure is not designed for efficient modification.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final SegmentedStringAn empty SegmentedStringstatic final int -
Constructor Summary
ConstructorsModifierConstructorDescriptionPrivate constructor creating an empty SegmentedString (containing an empty list of segments)protectedSegmentedString(UnicodeString[] segmentArray) Internal constructor for use by UnicodeBuilderSegmentedString(IntIterator codepoints) Constructor creating a SegmentedString from a codepoint iterator -
Method Summary
Modifier and TypeMethodDescriptionintcodePointAt(long index) Get the code point at a given position in the stringGet an iterator over the code points present in the string.concat(UnicodeString other) Concatenate another stringstatic UnicodeStringconcatSegments(UnicodeString left, UnicodeString right) Get an equivalent UnicodeString that uses the most economical representation availableintgetWidth()Get the number of bits needed to hold all the characters in this stringlongindexOf(int codePoint, long from) Get the position of the first occurrence of the specified codepoint, starting the search at a given position in the stringlongindexWhere(IntPredicate predicate, long from) Get the position of the first occurrence of a codepoint that matches a supplied predicate, starting the search at a given position in the stringbooleanisEmpty()Ask whether the string is emptylonglength()Get the length of the stringstatic SegmentedStringof(UnicodeString content) Construct a SegmentedString from a supplied UnicodeStringsubstring(long start, long end) Get a substring of this codepoint sequence, with a given start and end positiontoString()voidwriteSegments(UnicodeWriter writer) Write each of the segments in turn to a UnicodeWriterMethods inherited from class net.sf.saxon.str.UnicodeString
asAtomic, checkSubstringBounds, compareTo, equals, estimatedLength, fromLong, hashCode, hasSubstring, indexOf, indexOf, iterate, length32, longHashCode, prefix, requireInt, requireNonNegativeInt, substring, tidy
-
Field Details
-
SEGMENT_LENGTH
public static final int SEGMENT_LENGTH- See Also:
-
EMPTY
An empty SegmentedString
-
-
Constructor Details
-
SegmentedString
public SegmentedString()Private constructor creating an empty SegmentedString (containing an empty list of segments) -
SegmentedString
Constructor creating a SegmentedString from a codepoint iterator -
SegmentedString
Internal constructor for use by UnicodeBuilder- Parameters:
segmentArray- the array of segments. The method assumes that the segment length is correct.
-
-
Method Details
-
of
Construct a SegmentedString from a supplied UnicodeString- Parameters:
content- the supplied UnicodeString- Returns:
- the resulting ZenoString
-
codePoints
Get an iterator over the code points present in the string.- Specified by:
codePointsin classUnicodeString- Returns:
- an iterator that delivers the individual code points
-
length
public long length()Get the length of the string- Specified by:
lengthin classUnicodeString- Returns:
- the number of code points in the string
-
isEmpty
public boolean isEmpty()Ask whether the string is empty- Overrides:
isEmptyin classUnicodeString- Returns:
- true if the length of the string is zero
-
getWidth
public int getWidth()Get the number of bits needed to hold all the characters in this string- Specified by:
getWidthin classUnicodeString- Returns:
- 7 for ascii characters, 8 for latin-1, 16 for BMP, 24 for general Unicode.
-
indexOf
public long indexOf(int codePoint, long from) Get the position of the first occurrence of the specified codepoint, starting the search at a given position in the string- Specified by:
indexOfin classUnicodeString- Parameters:
codePoint- the sought codePointfrom- the position from which the search should start (0-based). A negative value is treated as zero. A position beyond the end of the string results in a return value of -1 (meaning not found).- Returns:
- the position (0-based) of the first occurrence found, or -1 if not found
- Throws:
IndexOutOfBoundsException- if thefromvalue is out of range
-
indexWhere
Description copied from class:UnicodeStringGet the position of the first occurrence of a codepoint that matches a supplied predicate, starting the search at a given position in the string- Specified by:
indexWherein classUnicodeString- Parameters:
predicate- condition that the codepoint must satisfyfrom- the position from which the search should start (0-based). A negative value is treated as zero. A position beyond the end of the string results in a return value of -1 (meaning not found).- Returns:
- the position (0-based) of the first codepoint to match the predicate, or -1 if not found
-
codePointAt
public int codePointAt(long index) Get the code point at a given position in the string- Specified by:
codePointAtin classUnicodeString- Parameters:
index- the given position (0-based)- Returns:
- the code point at the given position
- Throws:
IndexOutOfBoundsException- if the index is out of range
-
substring
Get a substring of this codepoint sequence, with a given start and end position- Specified by:
substringin classUnicodeString- Parameters:
start- the start position (0-based): that is, the position of the first code point to be includedend- the end position (0-based): specifically, the position of the first code point not to be included- Returns:
- the requested substring
-
concat
Concatenate another string- Overrides:
concatin classUnicodeString- Parameters:
other- the string to be appended to this one- Returns:
- the result of the concatenation (neither input string is altered)
-
writeSegments
Write each of the segments in turn to a UnicodeWriter- Parameters:
writer- the writer to which the string is to be written- Throws:
IOException
-
concatSegments
-
economize
Get an equivalent UnicodeString that uses the most economical representation available- Overrides:
economizein classUnicodeString- Returns:
- an equivalent UnicodeString
-
toString
-