public class StringValue extends AtomicValue
Modifier and Type | Class and Description |
---|---|
static class |
StringValue.CharacterIterator
CharacterIterator is used to iterate over the characters in a string,
returning them as integers representing the Unicode code-point.
|
static class |
StringValue.UnicodeCharacterIterator |
Modifier and Type | Field and Description |
---|---|
static StringValue |
EMPTY_STRING |
static StringValue |
FALSE |
static StringValue |
SINGLE_SPACE |
static StringValue |
TRUE |
protected java.lang.CharSequence |
value |
NaN_MATCH_KEY, typeLabel
Modifier | Constructor and Description |
---|---|
protected |
StringValue()
Protected constructor for use by subtypes
|
|
StringValue(java.lang.CharSequence value)
Constructor.
|
|
StringValue(java.lang.CharSequence value,
AtomicType typeLabel)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
boolean |
codepointEquals(StringValue other)
Test whether this StringValue is equal to another under the rules of the codepoint collation
|
boolean |
containsSurrogatePairs()
Determine whether the string contains surrogate pairs
|
static java.lang.CharSequence |
contract(int[] codes,
int used)
Contract an array of integers containing Unicode codepoints into a Java string
|
AtomicValue |
copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
|
static java.lang.String |
diagnosticDisplay(java.lang.String s)
Produce a diagnostic representation of the contents of the string
|
boolean |
effectiveBooleanValue()
Get the effective boolean value of a string
|
boolean |
equals(java.lang.Object other)
Determine if two AtomicValues are equal, according to XPath rules.
|
static int[] |
expand(java.lang.CharSequence s)
Expand a string containing surrogate pairs into an array of 32-bit characters
|
java.lang.CharSequence |
getPrimitiveStringValue()
Get the string value as a CharSequence
|
BuiltInAtomicType |
getPrimitiveType()
Determine the primitive type of the value.
|
java.lang.Comparable |
getSchemaComparable()
Get a Comparable value that implements the XML Schema comparison semantics for this value.
|
int |
getStringLength()
Get the length of this string, as defined in XPath.
|
static int |
getStringLength(java.lang.CharSequence s)
Get the length of a string, as defined in XPath.
|
int |
getStringLengthUpperBound()
Get an upper bound on the length of the string in Unicode codepoints.
|
UnicodeString |
getUnicodeString()
Get a UnicodeString value representing the same characters as this string.
|
AtomicMatchKey |
getXPathComparable(boolean ordered,
StringCollator collator,
int implicitTimezone)
Get an object value that implements the XPath equality and ordering comparison semantics for this value.
|
int |
hashCode() |
static boolean |
isEmpty(java.lang.CharSequence string)
Utility method to test whether a CharSequence is empty
|
boolean |
isIdentical(AtomicValue v)
Determine whether two atomic values are identical, as determined by XML Schema rules.
|
boolean |
isKnownToContainNoSurrogates()
Ask whether the string is known to contain no surrogate pairs.
|
boolean |
isZeroLength()
Determine whether the string is a zero-length string.
|
UnfailingIterator |
iterateCharacters()
Iterate over a string, returning a sequence of integers representing the Unicode code-point values
|
static StringValue |
makeStringValue(java.lang.CharSequence value)
Factory method.
|
void |
setContainsNoSurrogates()
Assert that the string is known to contain no surrogate pairs
|
void |
setStringValueCS(java.lang.CharSequence value)
Set the value of the item as a CharSequence.
|
java.lang.String |
toString()
Get string value.
|
asAtomic, asMapKey, atomize, checkPermittedContents, checkValidInJavascript, getCanonicalLexicalRepresentation, getCardinality, getComponent, getItemType, getStringValue, getStringValueCS, getUType, head, identityHashCode, isIdentical, isNaN, itemAt, iterate, iterator, process, setTypeLabel
getLength, isStreamed, reduce, subsequence
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
getLength
reduce, subsequence
public static final StringValue EMPTY_STRING
public static final StringValue SINGLE_SPACE
public static final StringValue TRUE
public static final StringValue FALSE
protected java.lang.CharSequence value
protected StringValue()
public StringValue(java.lang.CharSequence value)
value
- the String value. Null is taken as equivalent to "".public StringValue(java.lang.CharSequence value, AtomicType typeLabel)
value
- the String value.typeLabel
- the type of the value to be created. The caller must ensure that this is
a type derived from string and that the string is valid against this type.public void setContainsNoSurrogates()
public AtomicValue copyAsSubType(AtomicType typeLabel)
copyAsSubType
in class AtomicValue
typeLabel
- the type label of the new copy. The caller is responsible for checking that
the value actually conforms to this type.public BuiltInAtomicType getPrimitiveType()
getPrimitiveType
in class AtomicValue
public static StringValue makeStringValue(java.lang.CharSequence value)
value
- the String value. Null is taken as equivalent to "".public static boolean isEmpty(java.lang.CharSequence string)
string
- the input CharSequencepublic final java.lang.CharSequence getPrimitiveStringValue()
getPrimitiveStringValue
in class AtomicValue
public final void setStringValueCS(java.lang.CharSequence value)
For system use only. In principle, a StringValue is immutable. However, in special circumstances, if it is newly constructed, the content can be changed to reflect the effect of the whiteSpace facet.
value
- the value of the stringpublic int getStringLength()
public int getStringLengthUpperBound()
public UnicodeString getUnicodeString()
public static int getStringLength(java.lang.CharSequence s)
s
- The string whose length is requiredpublic boolean isZeroLength()
public boolean containsSurrogatePairs()
public boolean isKnownToContainNoSurrogates()
public UnfailingIterator iterateCharacters()
public static int[] expand(java.lang.CharSequence s)
s
- the string to be expandedpublic static java.lang.CharSequence contract(int[] codes, int used)
codes
- an array of integers representing the Unicode code pointsused
- the number of items in the array that are actually usedpublic AtomicMatchKey getXPathComparable(boolean ordered, StringCollator collator, int implicitTimezone)
getXPathComparable
in class AtomicValue
ordered
- true if an ordered comparison is required. In this case the result is null if the
type is unordered; in other cases the returned value will be a Comparable.collator
- Collation to be used for comparing stringsimplicitTimezone
- the XPath dynamic evaluation context, used in cases where the comparison is context
sensitivepublic boolean equals(java.lang.Object other)
equals
in class AtomicValue
other
- the other valuejava.lang.ClassCastException
- alwayspublic int hashCode()
hashCode
in class java.lang.Object
public boolean codepointEquals(StringValue other)
other
- the value to be compared with this valuepublic boolean effectiveBooleanValue()
effectiveBooleanValue
in interface GroundedValue
effectiveBooleanValue
in class AtomicValue
public java.lang.String toString()
AtomicValue
toString
in class AtomicValue
public java.lang.Comparable getSchemaComparable()
getSchemaComparable
in interface AtomicSequence
getSchemaComparable
in class AtomicValue
public boolean isIdentical(AtomicValue v)
Note that even this check ignores the type annotation of the value. The integer 3 and the short 3 are considered identical, even though they are not fully interchangeable. "Identical" means the same point in the value space, regardless of type annotation.
NaN is identical to itself.
isIdentical
in class AtomicValue
v
- the other value to be compared with this onepublic static java.lang.String diagnosticDisplay(java.lang.String s)
s
- the stringCopyright (c) 2004-2018 Saxonica Limited. All rights reserved.