Package net.sf.saxon.str
Class EmptyUnicodeString
- java.lang.Object
-
- net.sf.saxon.str.UnicodeString
-
- net.sf.saxon.str.EmptyUnicodeString
-
- All Implemented Interfaces:
java.lang.Comparable<UnicodeString>
,AtomicMatchKey
public final class EmptyUnicodeString extends UnicodeString
A zero-length Unicode string
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
codePointAt(long index)
Get the code point at a given position in the stringIntIterator
codePoints()
Get an iterator over the Unicode codepoints in the value.int
compareTo(UnicodeString other)
Compare this string to another using codepoint comparisonUnicodeString
concat(UnicodeString other)
Concatenate another stringjava.lang.String
details()
boolean
equals(java.lang.Object o)
Test whether this UnicodeString is equal to another under the rules of the codepoint collation.static EmptyUnicodeString
getInstance()
int
getWidth()
Get the number of bits needed to hold all the characters in this stringint
hashCode()
Compute a hashCode.long
indexOf(int code, long from)
Get the position of the first occurrence of the specified codepoint, starting the search at a given position in the stringlong
indexOf(UnicodeString other, long from)
Get the first position, at or beyond start, where another string appears as a substring of this string, comparing codepoints.long
indexWhere(java.util.function.IntPredicate predicate, long from)
Get the position of the first occurrence of the specified codepoint, starting the search at a given position in the stringboolean
isEmpty()
Determine whether the string is a zero-length string.long
length()
Get the length of this string, in codepointsint
length32()
Get the length of the string, provided it is less than 2^31 charactersUnicodeString
substring(long start, long end)
Get a substring of this string (following the rules ofString.substring(int)
, but measuring Unicode codepoints rather than 16-bit code units)java.lang.String
toString()
Display as a string.-
Methods inherited from class net.sf.saxon.str.UnicodeString
asAtomic, checkSubstringBounds, economize, estimatedLength, hasSubstring, indexOf, prefix, requireInt, requireNonNegativeInt, substring, tidy, verifyCharacters
-
-
-
-
Method Detail
-
getInstance
public static EmptyUnicodeString getInstance()
-
length
public long length()
Get the length of this string, in codepoints- Specified by:
length
in classUnicodeString
- Returns:
- the length of the string in Unicode code points
-
length32
public int length32()
Description copied from class:UnicodeString
Get the length of the string, provided it is less than 2^31 characters- Overrides:
length32
in classUnicodeString
- Returns:
- the length of the string if it fits within a Java
int
-
concat
public UnicodeString concat(UnicodeString other)
Concatenate another string- Overrides:
concat
in classUnicodeString
- Parameters:
other
- the string to be appended to this one- Returns:
- the result of the concatenation (neither input string is altered)
-
substring
public UnicodeString substring(long start, long end)
Get a substring of this string (following the rules ofString.substring(int)
, but measuring Unicode codepoints rather than 16-bit code units)- Specified by:
substring
in classUnicodeString
- Parameters:
start
- the offset of the first character to be included in the result, counting Unicode codepointsend
- the offset of the first character to be excluded from the result, counting Unicode codepoints- Returns:
- the substring
-
codePointAt
public int codePointAt(long index) throws java.lang.IndexOutOfBoundsException
Description copied from class:UnicodeString
Get the code point at a given position in the string- Specified by:
codePointAt
in classUnicodeString
- Parameters:
index
- the given position (0-based)- Returns:
- the code point at the given position
- Throws:
java.lang.IndexOutOfBoundsException
- if the index is out of range
-
indexOf
public long indexOf(int code, long from)
Description copied from class:UnicodeString
Get the position of the first occurrence of the specified codepoint, starting the search at a given position in the string- Specified by:
indexOf
in classUnicodeString
- Parameters:
code
- 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
-
indexOf
public long indexOf(UnicodeString other, long from)
Get the first position, at or beyond start, where another string appears as a substring of this string, comparing codepoints.- Overrides:
indexOf
in classUnicodeString
- Parameters:
other
- the other (sought) stringfrom
- the position (0-based) where searching is to start (counting in codepoints)- Returns:
- the first position where the substring is found, or -1 if it is not found. Also returns
-1 if
from
is negative, or beyond the length of the string.
-
isEmpty
public boolean isEmpty()
Determine whether the string is a zero-length string. This may be more efficient than testing whether the length is equal to zero- Overrides:
isEmpty
in classUnicodeString
- Returns:
- true if the string is zero length
-
getWidth
public int getWidth()
Description copied from class:UnicodeString
Get the number of bits needed to hold all the characters in this string- Specified by:
getWidth
in classUnicodeString
- Returns:
- 7 for ascii characters (not used??), 8 for latin-1, 16 for BMP, 24 for general Unicode.
-
codePoints
public IntIterator codePoints()
Get an iterator over the Unicode codepoints in the value. These will always be full codepoints, never surrogates (surrogate pairs are combined where necessary).- Specified by:
codePoints
in classUnicodeString
- Returns:
- a sequence of Unicode codepoints
-
hashCode
public int hashCode()
Compute a hashCode. All implementations ofUnicodeString
use compatible hash codes and the hashing algorithm is therefore identical to that forjava.lang.String
. This means that for strings containing Astral characters, the hash code needs to be computed by decomposing an Astral character into a surrogate pair.- Overrides:
hashCode
in classUnicodeString
- Returns:
- the hash code
-
equals
public boolean equals(java.lang.Object o)
Test whether this UnicodeString is equal to another under the rules of the codepoint collation.- Overrides:
equals
in classUnicodeString
- Parameters:
o
- the value to be compared with this value- Returns:
- true if the strings are equal on a codepoint-by-codepoint basis
-
compareTo
public int compareTo(UnicodeString other)
Description copied from class:UnicodeString
Compare this string to another using codepoint comparison- Specified by:
compareTo
in interfacejava.lang.Comparable<UnicodeString>
- Overrides:
compareTo
in classUnicodeString
- Parameters:
other
- the other string- Returns:
- -1 if this string comes first, 0 if they are equal, +1 if the other string comes first
-
toString
public java.lang.String toString()
Display as a string.- Overrides:
toString
in classjava.lang.Object
-
indexWhere
public long indexWhere(java.util.function.IntPredicate predicate, 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:
indexWhere
in classUnicodeString
- Parameters:
predicate
- condition that the codepoint must satisfyfrom
- the position from which the search should start (0-based)- Returns:
- the position (0-based) of the first codepoint to match the predicate, or -1 if not found
- Throws:
java.lang.UnsupportedOperationException
- if theUnicodeString
has not been prepared for codePoint access
-
details
public java.lang.String details()
-
-