Package: org.codehaus.groovy.runtime

## [Java] Class GStringImpl

- org.codehaus.groovy.runtime.GStringImpl

-     public class GStringImpl
      extends GString

  Default implementation of a GString used by the compiler. A GString consists of a list of values and strings which can be combined to create a new String.

  See Also:
    GString

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class GString` | `EMPTY, EMPTY_OBJECT_ARRAY, EMPTY_STRING_ARRAY`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `GStringImpl(Object[] values, String[] strings)` Create a new GString with values and strings.
    `protected GStringImpl(Object[] values, String[] strings, boolean cacheable, String cachedStringLiteral, boolean frozen)` Create a new GString with values and strings.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `build(GroovyObject builder)`
    `` | `protected int` | `calcInitialCapacity()`
    `` | `public int` | `codePointAt(int index)`
    `` | `public int` | `codePointBefore(int index)`
    `` | `public int` | `codePointCount(int beginIndex, int endIndex)`
    `` | `public int` | `compareTo(String anotherString)`
    `` | `public int` | `compareToIgnoreCase(String str)`
    `` | `public String` | `concat(String str)`
    `` | `public boolean` | `contains(CharSequence s)`
    `` | `public boolean` | `contentEquals(StringBuffer sb)`
    `` | `public boolean` | `contentEquals(CharSequence cs)`
    `` | `public boolean` | `endsWith(String suffix)`
    `` | `public boolean` | `equalsIgnoreCase(String anotherString)`
    `` | `public GString` | `freeze()` Returns: returns an equivalent optimised but less mutable version of this GString
    `` | `public byte[]` | `getBytes(Charset charset)`
    `` | `public void` | `getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)`
    `` | `public String[]` | `getStrings()` Get the strings of this GString.
    `` | `public Object[]` | `getValues()`
    `` | `public int` | `indexOf(int ch)`
    `` | `public int` | `indexOf(int ch, int fromIndex)`
    `` | `public int` | `indexOf(String str)`
    `` | `public int` | `indexOf(String str, int fromIndex)`
    `` | `public String` | `intern()`
    `` | `public boolean` | `isBlank()` Returns `true` if the string is empty or contains only { linkplain: Character#isWhitespace(int) white space} codepoints, otherwise `false`.
    `` | `public boolean` | `isEmpty()`
    `` | `public int` | `lastIndexOf(int ch)`
    `` | `public int` | `lastIndexOf(int ch, int fromIndex)`
    `` | `public int` | `lastIndexOf(String str)`
    `` | `public int` | `lastIndexOf(String str, int fromIndex)`
    `` | `public Stream<String>` | `lines()` Returns a stream of lines extracted from this string, separated by line terminators.
    `` | `public boolean` | `matches(String regex)`
    `` | `public int` | `offsetByCodePoints(int index, int codePointOffset)`
    `` | `public GString` | `plus(GString that)`
    `` | `public boolean` | `regionMatches(int toffset, String other, int ooffset, int len)`
    `` | `public boolean` | `regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)`
    `` | `public String` | `repeat(int count)` Returns a string whose value is the concatenation of this string repeated `count` times.
    `` | `public String` | `replace(char oldChar, char newChar)`
    `` | `public String` | `replace(CharSequence target, CharSequence replacement)`
    `` | `public String` | `replaceAll(String regex, String replacement)`
    `` | `public String` | `replaceFirst(String regex, String replacement)`
    `` | `public String[]` | `split(String regex, int limit)`
    `` | `public String[]` | `split(String regex)`
    `` | `public boolean` | `startsWith(String prefix, int toffset)`
    `` | `public boolean` | `startsWith(String prefix)`
    `` | `public String` | `strip()` Returns a string whose value is this string, with all leading and trailing { linkplain: Character#isWhitespace(int) white space} removed.
    `` | `public String` | `stripLeading()` Returns a string whose value is this string, with all leading { linkplain: Character#isWhitespace(int) white space} removed.
    `` | `public String` | `stripTrailing()` Returns a string whose value is this string, with all trailing { linkplain: Character#isWhitespace(int) white space} removed.
    `` | `public String` | `substring(int beginIndex)`
    `` | `public String` | `substring(int beginIndex, int endIndex)`
    `` | `public char[]` | `toCharArray()`
    `` | `public String` | `toLowerCase(Locale locale)`
    `` | `public String` | `toLowerCase()`
    `` | `public String` | `toString()`
    `` | `public String` | `toUpperCase(Locale locale)`
    `` | `public String` | `toUpperCase()`
    `` | `public String` | `trim()`
    `` | `public Writer` | `writeTo(Writer out)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class GString` | `build, calcInitialCapacity, charAt, compareTo, equals, equals, getBytes, getBytes, getStrings, getStrings, getValue, getValueCount, getValues, hashCode, invokeMethod, length, negate, plus, plus, subSequence, toString, toString, writeTo`
    `class GroovyObjectSupport` | `getMetaClass, setMetaClass`

- - ### Constructor Detail

    - #### public GStringImpl(Object[] values, String[] strings)

      Create a new GString with values and strings.

      Each value is prefixed by a string, after the last value an additional String might be used, hence the following constraint is expected to hold: `strings.length == values.length || strings.length == values.length + 1` .

      NOTE: The lengths are not checked but using arrays with lengths which violate the above constraint could result in unpredictable behaviour.

      Parameters:
        `values` - the value parts
        `strings` - the string parts

    - #### protected GStringImpl(Object[] values, String[] strings, boolean cacheable, String cachedStringLiteral, boolean frozen)

      Create a new GString with values and strings.

      Each value is prefixed by a string, after the last value an additional String might be used, hence the following constraint is expected to hold: `strings.length == values.length || strings.length == values.length + 1` .

      NOTE: The lengths are not checked but using arrays with lengths which violate the above constraint could result in unpredictable behaviour.

      Parameters:
        `values` - the value parts
        `strings` - the string parts
        `frozen` - creates a GStringImpl which is not subject to mutation and hence more amenable to caching

  - ### Method Detail

    - #### @Override
      public void build(GroovyObject builder)

    - #### @Override
      protected int calcInitialCapacity()

    - #### public int codePointAt(int index)

    - #### public int codePointBefore(int index)

    - #### public int codePointCount(int beginIndex, int endIndex)

    - #### public int compareTo(String anotherString)

    - #### public int compareToIgnoreCase(String str)

    - #### public String concat(String str)

    - #### public boolean contains(CharSequence s)

    - #### public boolean contentEquals(StringBuffer sb)

    - #### public boolean contentEquals(CharSequence cs)

    - #### public boolean endsWith(String suffix)

    - #### public boolean equalsIgnoreCase(String anotherString)

    - #### public GString freeze()

      Returns:
        returns an equivalent optimised but less mutable version of this GString

    - #### public byte[] getBytes(Charset charset)

    - #### public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

    - #### @Override
      public String[] getStrings()

      Get the strings of this GString.

      This method returns the same array as used in the constructor. Changing the values will result in changes of the GString. It is generally not recommended to do so.

    - #### @Override
      public Object[] getValues()

    - #### public int indexOf(int ch)

    - #### public int indexOf(int ch, int fromIndex)

    - #### public int indexOf(String str)

    - #### public int indexOf(String str, int fromIndex)

    - #### public String intern()

    - #### public boolean isBlank()

      Returns `true` if the string is empty or contains only {

      linkplain:
        Character#isWhitespace(int) white space} codepoints, otherwise `false`.
      Returns:
        `true` if the string is empty or contains only {@linkplain Character#isWhitespace(int) white space} codepoints, otherwise `false`
      See Also:
        Character.isWhitespace
      Since:
        5.0.0

    - #### public boolean isEmpty()

    - #### public int lastIndexOf(int ch)

    - #### public int lastIndexOf(int ch, int fromIndex)

    - #### public int lastIndexOf(String str)

    - #### public int lastIndexOf(String str, int fromIndex)

    - #### public Stream<String> lines()

      Returns a stream of lines extracted from this string, separated by line terminators.

      A line terminator is one of the following: a line feed character `"\n"` (U+000A), a carriage return character `"\r"` (U+000D), or a carriage return followed immediately by a line feed `"\r\n"` (U+000D U+000A).

      A line is either a sequence of zero or more characters followed by a line terminator, or it is a sequence of one or more characters followed by the end of the string. A line does not include the line terminator.

      The stream returned by this method contains the lines from this string in the order in which they occur.

      apiNote:
        This definition of line implies that an empty string has zero lines and that there is no empty line following a line terminator at the end of a string.
      implNote:
        This method provides better performance than split("\R") by supplying elements lazily and by faster search of new line terminators.
      Returns:
        the stream of lines extracted from this string
      Since:
        5.0.0

    - #### public boolean matches(String regex)

    - #### public int offsetByCodePoints(int index, int codePointOffset)

    - #### @Override
      public GString plus(GString that)

    - #### public boolean regionMatches(int toffset, String other, int ooffset, int len)

    - #### public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

    - #### public String repeat(int count)

      Returns a string whose value is the concatenation of this string repeated `count` times.

      If this string is empty or count is zero then the empty string is returned.

      throws:
        IllegalArgumentException if the `count` is negative.
      Parameters:
        `count` - number of times to repeat
      Returns:
        A string composed of this string repeated `count` times or the empty string if this string is empty or count is zero
      Since:
        5.0.0

    - #### public String replace(char oldChar, char newChar)

    - #### public String replace(CharSequence target, CharSequence replacement)

    - #### public String replaceAll(String regex, String replacement)

    - #### public String replaceFirst(String regex, String replacement)

    - #### public String[] split(String regex, int limit)

    - #### public String[] split(String regex)

    - #### public boolean startsWith(String prefix, int toffset)

    - #### public boolean startsWith(String prefix)

    - #### public String strip()

      Returns a string whose value is this string, with all leading and trailing {

      linkplain:
        Character#isWhitespace(int) white space} removed.

        If this `String` object represents an empty string, or if all code points in this string are {@linkplain Character#isWhitespace(int) white space}, then an empty string is returned.

        Otherwise, returns a substring of this string beginning with the first code point that is not a {@linkplain Character#isWhitespace(int) white space} up to and including the last code point that is not a {@linkplain Character#isWhitespace(int) white space}.

        This method may be used to strip {@linkplain Character#isWhitespace(int) white space} from the beginning and end of a string.

      Returns:
        a string whose value is this string, with all leading and trailing white space removed
      See Also:
        Character.isWhitespace
      Since:
        5.0.0

    - #### public String stripLeading()

      Returns a string whose value is this string, with all leading {

      linkplain:
        Character#isWhitespace(int) white space} removed.

        If this `String` object represents an empty string, or if all code points in this string are {@linkplain Character#isWhitespace(int) white space}, then an empty string is returned.

        Otherwise, returns a substring of this string beginning with the first code point that is not a {@linkplain Character#isWhitespace(int) white space} up to and including the last code point of this string.

        This method may be used to trim {@linkplain Character#isWhitespace(int) white space} from the beginning of a string.

      Returns:
        a string whose value is this string, with all leading white space removed
      See Also:
        Character.isWhitespace
      Since:
        5.0.0

    - #### public String stripTrailing()

      Returns a string whose value is this string, with all trailing {

      linkplain:
        Character#isWhitespace(int) white space} removed.

        If this `String` object represents an empty string, or if all characters in this string are {@linkplain Character#isWhitespace(int) white space}, then an empty string is returned.

        Otherwise, returns a substring of this string beginning with the first code point of this string up to and including the last code point that is not a {@linkplain Character#isWhitespace(int) white space}.

        This method may be used to trim {@linkplain Character#isWhitespace(int) white space} from the end of a string.

      Returns:
        a string whose value is this string, with all trailing white space removed
      See Also:
        Character.isWhitespace
      Since:
        5.0.0

    - #### public String substring(int beginIndex)

    - #### public String substring(int beginIndex, int endIndex)

    - #### public char[] toCharArray()

    - #### public String toLowerCase(Locale locale)

    - #### public String toLowerCase()

    - #### @Override
      public String toString()

    - #### public String toUpperCase(Locale locale)

    - #### public String toUpperCase()

    - #### public String trim()

    - #### @Override
      public Writer writeTo(Writer out)