## net.sf.saxon.value
Class StringValue

    java.lang.Object
      |
      +--net.sf.saxon.value.Value
            |
            +--net.sf.saxon.value.AtomicValue
                  |
                  +--net.sf.saxon.value.StringValue

All Implemented Interfaces:
  Expression, Item, java.io.Serializable

Direct Known Subclasses:
  RestrictedStringValue, UntypedAtomicValue

public class StringValue
extends AtomicValue

An atomic value of type xs:string

See Also:
  Serialized Form

Nested Class Summary
`class` `StringValue.CharacterIterator` CharacterIterator is used to iterate over the characters in a string, returning them as integers representing the Unicode code-point.

Field Summary
`static StringValue` `EMPTY_STRING`
`protected int` `length`
`protected java.lang.CharSequence` `value`

Fields inherited from interface net.sf.saxon.expr.Expression
`EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD`

Constructor Summary
`protected` `StringValue()` Protected constructor for use by subtypes
`` `StringValue(java.lang.CharSequence value)` Constructor.

Method Summary
`AtomicValue` `convert(int requiredType, XPathContext context)` Convert to target data type
`java.lang.Object` `convertToJava(java.lang.Class target, Configuration config, XPathContext context)` Convert to Java object (for passing to external functions)
`boolean` `effectiveBooleanValue(XPathContext context)` Get the effective boolean value of the value
`boolean` `equals(java.lang.Object other)` Determine if two StringValues are equal
`static int[]` `expand(java.lang.CharSequence s)` Expand a string containing surrogate pairs into an array of 32-bit characters
`ItemType` `getItemType()` Return the type of the expression
`int` `getLength()` Get the length of this string, as defined in XPath.
`static int` `getLength(java.lang.CharSequence s)` Get the length of a string, as defined in XPath.
`java.lang.String` `getStringValue()` Get the string value as a String
`int` `hashCode()`
`SequenceIterator` `iterateCharacters()` Iterate over a string, returning a sequence of integers representing the Unicode code-point values
`java.lang.String` `toString()` Get string value.

Methods inherited from class net.sf.saxon.value.AtomicValue
`convert, display, evaluateAsString, evaluateItem, getCardinality, getComponent, getImplementationMethod, getPrimitiveValue, getTypedValue, iterate, process`

Methods inherited from class net.sf.saxon.value.Value
`analyze, asItem, asValue, collapseWhitespace, convertJavaObjectToXPath, getDependencies, getParentExpression, getSpecialProperties, inverse, iterateSubExpressions, normalizeWhitespace, promote, simplify, stringToNumber, trimWhitespace`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### EMPTY_STRING

    public static final StringValue EMPTY_STRING

### value

    protected java.lang.CharSequence value

### length

    protected int length

Constructor Detail

### StringValue

    protected StringValue()

  Protected constructor for use by subtypes

### StringValue

    public StringValue(java.lang.CharSequence value)

  Constructor. Note that although a StringValue may wrap any kind of CharSequence (usually a String, but it can also be, for example, a StringBuffer), the caller is responsible for ensuring that the value is immutable.

Parameters:
  `value` - the String value. Null is taken as equivalent to "".

Method Detail

### getStringValue

    public final java.lang.String getStringValue()

  Get the string value as a String

  Specified by:
    `getStringValue` in interface `Item`
  Specified by:
    `getStringValue` in class `AtomicValue`
  Returns:
    the string value of the item

### convert

    public AtomicValue convert(int requiredType,
                               XPathContext context)
                        throws XPathException

  Convert to target data type

  Specified by:
    `convert` in class `AtomicValue`
  Parameters:
    `requiredType` - an integer identifying the required atomic type
    `context` - the evaluation context. Used primarily for error reporting, since nearly all type conversions are context-independent. The value may be null if the context is not known.
  Returns:
    an AtomicValue, a value of the required type
  Throws:
    `XPathException` - if the conversion is not possible

### getItemType

    public ItemType getItemType()

  Return the type of the expression

  Returns:
    Type.STRING (always)

### getLength

    public int getLength()

  Get the length of this string, as defined in XPath. This is not the same as the Java length, as a Unicode surrogate pair counts as a single character

### getLength

    public static int getLength(java.lang.CharSequence s)

  Get the length of a string, as defined in XPath. This is not the same as the Java length, as a Unicode surrogate pair counts as a single character.

  Parameters:
    `s` - The string whose length is required

### iterateCharacters

    public SequenceIterator iterateCharacters()

  Iterate over a string, returning a sequence of integers representing the Unicode code-point values

### expand

    public static int[] expand(java.lang.CharSequence s)

  Expand a string containing surrogate pairs into an array of 32-bit characters

### equals

    public boolean equals(java.lang.Object other)

  Determine if two StringValues are equal

  Overrides:
    `equals` in class `java.lang.Object`
  Throws:
    `java.lang.ClassCastException` - if the values are not comparable

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `java.lang.Object`

### effectiveBooleanValue

    public boolean effectiveBooleanValue(XPathContext context)

  Description copied from class: `AtomicValue`
  Get the effective boolean value of the value

  Specified by:
    `effectiveBooleanValue` in interface `Expression`
  Overrides:
    `effectiveBooleanValue` in class `AtomicValue`
  Parameters:
    `context` - the evaluation context (not used in this implementation)
  Returns:
    true, unless the value is boolean false, numeric zero, or zero-length string

### convertToJava

    public java.lang.Object convertToJava(java.lang.Class target,
                                          Configuration config,
                                          XPathContext context)
                                   throws XPathException

  Convert to Java object (for passing to external functions)

  Overrides:
    `convertToJava` in class `AtomicValue`
  Parameters:
    `target` - The class required by the external function
    `config` - The configuration (needed for access to schema information)
  Returns:
    an object of the target class
    `XPathException`

### toString

    public java.lang.String toString()

  Description copied from class: `AtomicValue`
  Get string value. In general toString() for an atomic value displays the value as it would be written in XPath: that is, as a literal if available, or as a call on a constructor function otherwise.

  Overrides:
    `toString` in class `AtomicValue`