Package net.sf.saxon.functions

## Class Substring

- java.lang.Object
- - net.sf.saxon.functions.AbstractFunction
  - - net.sf.saxon.functions.SystemFunction
    - - net.sf.saxon.functions.Substring

- All Implemented Interfaces:
    `Callable`, `Function`, `GroundedValue`, `Item`, `Sequence`

      public class Substring
      extends SystemFunction
      implements Callable

  This class implements the XPath substring() function

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Substring()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ZeroOrOne` | `call​(XPathContext context, Sequence[] arguments)` | Evaluate the expression
    `java.lang.String` | `getCompilerName()` | Get the (local) name of a class that can be used to generate bytecode for this system function
    `static UnicodeString` | `substring​(StringValue sv, NumericValue start)` | Implement the substring function with two arguments.
    `static UnicodeString` | `substring​(StringValue sv, NumericValue start, NumericValue len)` | Implement the substring function with three arguments.
    `Expression` | `typeCheckCaller​(FunctionCall caller, ExpressionVisitor visitor, ContextItemStaticInfo contextInfo)` | Type-check the expression.

    - ### Methods inherited from class net.sf.saxon.functions.SystemFunction

      `dependsOnContextItem, dynamicCall, equals, export, exportAdditionalArguments, exportAttributes, fixArguments, getArity, getCardinality, getContextNode, getDescription, getDetails, getErrorCodeForTypeErrors, getFunctionItemType, getFunctionName, getIntegerBounds, getNetCost, getOperandRoles, getRequiredType, getResultItemType, getResultItemType, getRetainedStaticContext, getSpecialProperties, getStaticBaseUriString, getStreamerName, importAttributes, isTrustedResultType, makeCall, makeFunction, makeFunctionCall, makeOptimizedFunctionCall, resultIfEmpty, setArity, setDetails, setRetainedStaticContext, supplyTypeInformation, toShortString, toString`

    - ### Methods inherited from class net.sf.saxon.functions.AbstractFunction

      `atomize, deepEquals, effectiveBooleanValue, getAnnotations, getStringValue, getStringValueCS, isArray, isMap, makeNewContext, simplify, typeCheck`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.om.Function

      `getGenre`

    - ### Methods inherited from interface net.sf.saxon.om.GroundedValue

      `asIterable, concatenate, containsNode, materialize`

    - ### Methods inherited from interface net.sf.saxon.om.Item

      `getLength, head, isStreamed, itemAt, iterate, reduce, subsequence`

    - ### Methods inherited from interface net.sf.saxon.om.Sequence

      `makeRepeatable`

- - ### Constructor Detail

    - #### Substring

          public Substring()

  - ### Method Detail

    - #### typeCheckCaller

          public Expression typeCheckCaller​(FunctionCall caller,
                                            ExpressionVisitor visitor,
                                            ContextItemStaticInfo contextInfo)
                                     throws XPathException

      Type-check the expression. This also calls preEvaluate() to evaluate the function if all the arguments are constant; functions that do not require this behavior can override the preEvaluate method.
      Overrides:
        `typeCheckCaller` in class `SystemFunction`
      Throws:
        `XPathException`

    - #### substring

          public static UnicodeString substring​(StringValue sv,
                                                NumericValue start)

      Implement the substring function with two arguments.
      Parameters:
        `sv` - the string value
        `start` - the numeric offset (1-based) of the first character to be included in the result (if not an integer, the XPath rules apply)
      Returns:
        the substring starting at this position.

    - #### substring

          public static UnicodeString substring​(StringValue sv,
                                                NumericValue start,
                                                NumericValue len)

      Implement the substring function with three arguments.
      Parameters:
        `sv` - the string value
        `start` - the numeric offset (1-based) of the first character to be included in the result (if not an integer, the XPath rules apply)
        `len` - the length of the required substring (again, XPath rules apply)
      Returns:
        the substring starting at this position.

    - #### call

          public ZeroOrOne call​(XPathContext context,
                                Sequence[] arguments)
                         throws XPathException

      Evaluate the expression
      Specified by:
        `call` in interface `Callable`
      Specified by:
        `call` in interface `Function`
      Parameters:
        `context` - the dynamic evaluation context
        `arguments` - the values of the arguments, supplied as Sequences
      Returns:
        the result of the evaluation, in the form of a Sequence
      Throws:
        `XPathException` - if a dynamic error occurs during the evaluation of the expression

    - #### getCompilerName

          public java.lang.String getCompilerName()

      Description copied from class: `SystemFunction`
      Get the (local) name of a class that can be used to generate bytecode for this system function
      Overrides:
        `getCompilerName` in class `SystemFunction`
      Returns:
        the name of a bytecode generation class, or null if there is no bytecode support for this function