Class PyUnicode

All Implemented Interfaces:
Serializable, CharSequence, Iterable<Integer>, BufferProtocol
Direct Known Subclasses:
PyUnicodeDerived

public class PyUnicode extends PyString implements Iterable<Integer>
a builtin python unicode string.
See Also:
  • Field Details

    • TYPE

      public static final PyType TYPE
  • Constructor Details

    • PyUnicode

      public PyUnicode()
    • PyUnicode

      public PyUnicode(String string)
      Construct a PyUnicode interpreting the Java String argument as UTF-16.
      Parameters:
      string - UTF-16 string encoding the characters (as Java).
    • PyUnicode

      public PyUnicode(String string, boolean isBasic)
      Construct a PyUnicode interpreting the Java String argument as UTF-16. If it is known that the string contains no supplementary characters, argument isBasic may be set true by the caller. If it is false, the PyUnicode will scan the string to find out.
      Parameters:
      string - UTF-16 string encoding the characters (as Java).
      isBasic - true if it is known that only BMP characters are present.
    • PyUnicode

      public PyUnicode(PyType subtype, String string)
    • PyUnicode

      public PyUnicode(PyString pystring)
    • PyUnicode

      public PyUnicode(PyType subtype, PyString pystring)
    • PyUnicode

      public PyUnicode(char c)
    • PyUnicode

      public PyUnicode(int codepoint)
    • PyUnicode

      public PyUnicode(int[] codepoints)
    • PyUnicode

      public PyUnicode(Iterator<Integer> iter)
    • PyUnicode

      public PyUnicode(Collection<Integer> ucs4)
  • Method Details

    • toCodePoints

      public int[] toCodePoints()
      Overrides:
      toCodePoints in class PyString
    • getBuffer

      public PyBuffer getBuffer(int flags) throws ClassCastException
      PyUnicode implements the interface BufferProtocol technically by inheritance from PyString, but does not provide a buffer (in CPython). We therefore arrange that all calls to getBuffer raise an error.
      Specified by:
      getBuffer in interface BufferProtocol
      Overrides:
      getBuffer in class PyString
      Parameters:
      flags - consumer requirements
      Returns:
      always throws a ClassCastException
      Throws:
      ClassCastException - when the object only formally implements BufferProtocol
    • substring

      public String substring(int start, int end)
      Return a substring of this object as a Java String. The indices are code point indices, not UTF-16 (char) indices. For example:
       PyUnicode u = new PyUnicode("..𐀂𐀃...");
       // (Python) u = u'..\U00010002\U00010003...'
      
       String s = u.substring(2, 4);  // = "𐀂𐀃" (Java)
       
      Overrides:
      substring in class PyString
      Parameters:
      start - the beginning index, inclusive.
      end - the ending index, exclusive.
      Returns:
      the specified substring.
    • fromInterned

      public static PyUnicode fromInterned(String interned)
      Creates a PyUnicode from an already interned String. Just means it won't be reinterned if used in a place that requires interned Strings.
    • isBasicPlane

      public boolean isBasicPlane()
      Determine whether the string consists entirely of basic-plane characters. For a PyString, of course, it is always true, but this is useful in cases where either a PyString or a PyUnicode is acceptable.
      Overrides:
      isBasicPlane in class PyString
      Returns:
      true if the string consists only of BMP characters
    • getCodePointCount

      public int getCodePointCount()
    • checkEncoding

      public static String checkEncoding(String s)
    • createInstance

      public PyString createInstance(String str)
      Description copied from class: PyString
      Create an instance of the same type as this object, from the Java String given as argument. This is to be overridden in a subclass to return its own type.
      Overrides:
      createInstance in class PyString
      Parameters:
      str - to wrap
      Returns:
      instance wrapping str
    • __mod__

      public PyObject __mod__(PyObject other)
      Description copied from class: PyObject
      Equivalent to the standard Python __mod__ method
      Overrides:
      __mod__ in class PyString
      Parameters:
      other - the object to perform this binary operation with (the right-hand operand).
      Returns:
      the result of the mod, or null if this operation is not defined
    • __unicode__

      public PyUnicode __unicode__()
      Overrides:
      __unicode__ in class PyString
    • __str__

      public PyString __str__()
      Description copied from class: PyObject
      Equivalent to the standard Python __str__ method. The default implementation (in PyObject) calls PyObject.__repr__(), making it unnecessary to override __str__ in sub-classes of PyObject where both forms are the same. A common choice is to provide the same implementation to __str__ and toString, for consistency in the printed form of objects between Python and Java.
      Overrides:
      __str__ in class PyString
    • __len__

      public int __len__()
      Description copied from class: PyObject
      Equivalent to the standard Python __len__ method. Part of the mapping discipline.
      Overrides:
      __len__ in class PyString
      Returns:
      the length of the object
    • __repr__

      public PyString __repr__()
      Description copied from class: PyObject
      Equivalent to the standard Python __repr__ method. Each sub-class of PyObject is likely to re-define this method to provide for its own reproduction.
      Overrides:
      __repr__ in class PyString
    • __eq__

      public PyObject __eq__(PyObject other)
      Description copied from class: PyObject
      Equivalent to the standard Python __eq__ method.
      Overrides:
      __eq__ in class PyString
      Parameters:
      other - the object to compare this with.
      Returns:
      the result of the comparison.
    • __ne__

      public PyObject __ne__(PyObject other)
      Description copied from class: PyObject
      Equivalent to the standard Python __ne__ method.
      Overrides:
      __ne__ in class PyString
      Parameters:
      other - the object to compare this with.
      Returns:
      the result of the comparison.
    • __lt__

      public PyObject __lt__(PyObject other)
      Description copied from class: PyObject
      Equivalent to the standard Python __lt__ method.
      Overrides:
      __lt__ in class PyString
      Parameters:
      other - the object to compare this with.
      Returns:
      the result of the comparison.
    • __le__

      public PyObject __le__(PyObject other)
      Description copied from class: PyObject
      Equivalent to the standard Python __le__ method.
      Overrides:
      __le__ in class PyString
      Parameters:
      other - the object to compare this with.
      Returns:
      the result of the comparison.
    • __gt__

      public PyObject __gt__(PyObject other)
      Description copied from class: PyObject
      Equivalent to the standard Python __gt__ method.
      Overrides:
      __gt__ in class PyString
      Parameters:
      other - the object to compare this with.
      Returns:
      the result of the comparison.
    • __ge__

      public PyObject __ge__(PyObject other)
      Description copied from class: PyObject
      Equivalent to the standard Python __ge__ method.
      Overrides:
      __ge__ in class PyString
      Parameters:
      other - the object to compare this with.
      Returns:
      the result of the comparison.
    • getInt

      public int getInt(int i)
      Overrides:
      getInt in class PyString
    • newSubsequenceIterator

      public Iterator<Integer> newSubsequenceIterator()
      Get an iterator over the code point sequence.
    • newSubsequenceIterator

      public Iterator<Integer> newSubsequenceIterator(int start, int stop, int step)
      Get an iterator over a slice of the code point sequence.
    • __contains__

      public boolean __contains__(PyObject o)
      Description copied from class: PyObject
      Equivalent to the standard Python __contains__ method.
      Overrides:
      __contains__ in class PyString
      Parameters:
      o - the element to search for in this container.
      Returns:
      the result of the search.
    • __add__

      public PyObject __add__(PyObject other)
      Description copied from class: PyString
      Equivalent to the standard Python __add__ method. For a str addition means concatenation and returns a str (PyString) result, except when a PyUnicode argument is given, when a PyUnicode results.
      Overrides:
      __add__ in class PyString
      Parameters:
      other - the object to perform this binary operation with (the right-hand operand).
      Returns:
      the result of the add, or null if this operation is not defined.
    • partition

      public PyTuple partition(PyObject sep)
      Description copied from class: PyString
      Equivalent to Python str.partition(), splits the PyString at the first occurrence of sepObj returning a PyTuple containing the part before the separator, the separator itself, and the part after the separator.
      Overrides:
      partition in class PyString
      Parameters:
      sep - str, unicode or object implementing BufferProtocol
      Returns:
      tuple of parts
    • rpartition

      public PyTuple rpartition(PyObject sep)
      Description copied from class: PyString
      Equivalent to Python str.rpartition(), splits the PyString at the last occurrence of sepObj returning a PyTuple containing the part before the separator, the separator itself, and the part after the separator.
      Overrides:
      rpartition in class PyString
      Parameters:
      sep - str, unicode or object implementing BufferProtocol
      Returns:
      tuple of parts
    • join

      public PyString join(PyObject seq)
      Overrides:
      join in class PyString
    • startswith

      public boolean startswith(PyObject prefix, PyObject start, PyObject end)
      Equivalent to the Python unicode.startswith method, testing whether a string starts with a specified prefix, where a sub-range is specified by [start:end]. Arguments start and end are interpreted as in slice notation, with null or Py.None representing "missing". prefix can also be a tuple of prefixes to look for.
      Overrides:
      startswith in class PyString
      Parameters:
      prefix - string to check for (or a PyTuple of them).
      start - start of slice.
      end - end of slice.
      Returns:
      true if this string slice starts with a specified prefix, otherwise false.
    • endswith

      public boolean endswith(PyObject suffix, PyObject start, PyObject end)
      Equivalent to the Python unicode.endswith method, testing whether a string ends with a specified suffix, where a sub-range is specified by [start:end]. Arguments start and end are interpreted as in slice notation, with null or Py.None representing "missing". suffix can also be a tuple of suffixes to look for.
      Overrides:
      endswith in class PyString
      Parameters:
      suffix - string to check for (or a PyTuple of them).
      start - start of slice.
      end - end of slice.
      Returns:
      true if this string slice ends with a specified suffix, otherwise false.
    • __format__

      public PyObject __format__(PyObject formatSpec)
      Overrides:
      __format__ in class PyString
    • iterator

      public Iterator<Integer> iterator()
      Specified by:
      iterator in interface Iterable<Integer>
    • __complex__

      public PyComplex __complex__()
      Description copied from class: PyObject
      Equivalent to the standard Python __complex__ method. Should only be overridden by numeric objects that can be reasonably coerced into a python complex number.
      Overrides:
      __complex__ in class PyString
      Returns:
      a complex number corresponding to the value of this object.
    • atoi

      public int atoi(int base)
      Overrides:
      atoi in class PyString
    • atol

      public PyLong atol(int base)
      Overrides:
      atol in class PyString
    • atof

      public double atof()
      Description copied from class: PyString
      Convert this PyString to a floating-point value according to Python rules.
      Overrides:
      atof in class PyString
      Returns:
      the value