## org.apache.poi.hssf.record.common
Class UnicodeString

    java.lang.Object
      org.apache.poi.hssf.record.common.UnicodeString

All Implemented Interfaces:
  java.lang.Comparable<UnicodeString>

Direct Known Subclasses:
  UnicodeString

    public class UnicodeString

extends java.lang.Object
implements java.lang.Comparable<UnicodeString>

Title: Unicode String

Description: Unicode String - just standard fields that are in several records. It is considered more desirable then repeating it in all of them.

This is often called a XLUnicodeRichExtendedString in MS documentation.

REFERENCE: PG 264 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

REFERENCE: PG 951 Excel Binary File Format (.xls) Structure Specification v20091214

Nested Class Summary
`static class` `UnicodeString.ExtRst`
`static class` `UnicodeString.FormatRun`
`static class` `UnicodeString.PhRun`

Constructor Summary
`UnicodeString(RecordInputStream in)` construct a unicode string record and fill its fields, ID is ignored
`UnicodeString(java.lang.String str)`

Method Summary
`void` `addFormatRun(UnicodeString.FormatRun r)` Adds a font run to the formatted string.
`void` `clearFormatting()`
`java.lang.Object` `clone()`
`int` `compareTo(UnicodeString str)`
`boolean` `equals(java.lang.Object o)` Our handling of equals is inconsistent with compareTo.
`java.util.Iterator<UnicodeString.FormatRun>` `formatIterator()`
`int` `getCharCount()` get the number of characters in the string, as an un-wrapped int
`short` `getCharCountShort()` get the number of characters in the string, wrapped as needed to fit within a short
`java.lang.String` `getDebugInfo()` return a character representation of the fields of this record
`UnicodeString.ExtRst` `getExtendedRst()`
`UnicodeString.FormatRun` `getFormatRun(int index)`
`int` `getFormatRunCount()`
`byte` `getOptionFlags()` get the option flags which among other things return if this is a 16-bit or 8 bit string
`java.lang.String` `getString()`
`int` `hashCode()`
`void` `removeFormatRun(UnicodeString.FormatRun r)`
`void` `serialize(ContinuableRecordOutput out)` Serialises out the String.
`void` `setCharCount(short cc)` set the number of characters in the string
`void` `setOptionFlags(byte of)` set the option flags which among other things return if this is a 16-bit or 8 bit string
`void` `setString(java.lang.String string)` set the actual string this contains
`void` `swapFontUse(short oldFontIndex, short newFontIndex)` Swaps all use in the string of one font index for use of a different font index.
`java.lang.String` `toString()` unlike the real records we return the same as "getString()" rather than debug info

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

Constructor Detail

### UnicodeString

    public UnicodeString(java.lang.String str)

### UnicodeString

    public UnicodeString(RecordInputStream in)

  construct a unicode string record and fill its fields, ID is ignored

  Parameters:
    `in` - the RecordInputstream to read the record from

Method Detail

### hashCode

    public int hashCode()

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

### equals

    public boolean equals(java.lang.Object o)

  Our handling of equals is inconsistent with compareTo. The trouble is because we don't truely understand rich text fields yet it's difficult to make a sound comparison.

  Overrides:
    `equals` in class `java.lang.Object`
  Parameters:
    `o` - The object to compare.
  Returns:
    true if the object is actually equal.

### getCharCount

    public int getCharCount()

  get the number of characters in the string, as an un-wrapped int

  Returns:
    number of characters

### getCharCountShort

    public short getCharCountShort()

  get the number of characters in the string, wrapped as needed to fit within a short

  Returns:
    number of characters

### setCharCount

    public void setCharCount(short cc)

  set the number of characters in the string

  Parameters:
    `cc` - - number of characters

### getOptionFlags

    public byte getOptionFlags()

  get the option flags which among other things return if this is a 16-bit or 8 bit string

  Returns:
    optionflags bitmask

### setOptionFlags

    public void setOptionFlags(byte of)

  set the option flags which among other things return if this is a 16-bit or 8 bit string

  Parameters:
    `of` - optionflags bitmask

### getString

    public java.lang.String getString()

  Returns:
    the actual string this contains as a java String object

### setString

    public void setString(java.lang.String string)

  set the actual string this contains

  Parameters:
    `string` - the text

### getFormatRunCount

    public int getFormatRunCount()

### getFormatRun

    public UnicodeString.FormatRun getFormatRun(int index)

### addFormatRun

    public void addFormatRun(UnicodeString.FormatRun r)

  Adds a font run to the formatted string. If a font run exists at the current charcter location, then it is replaced with the font run to be added.

### formatIterator

    public java.util.Iterator<UnicodeString.FormatRun> formatIterator()

### removeFormatRun

    public void removeFormatRun(UnicodeString.FormatRun r)

### clearFormatting

    public void clearFormatting()

### getExtendedRst

    public UnicodeString.ExtRst getExtendedRst()

### swapFontUse

    public void swapFontUse(short oldFontIndex,
                            short newFontIndex)

  Swaps all use in the string of one font index for use of a different font index. Normally only called when fonts have been removed / re-ordered

### toString

    public java.lang.String toString()

  unlike the real records we return the same as "getString()" rather than debug info

  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    String value of the record
  See Also:
    `getDebugInfo()`

### getDebugInfo

    public java.lang.String getDebugInfo()

  return a character representation of the fields of this record

  Returns:
    String of output for biffviewer etc.

### serialize

    public void serialize(ContinuableRecordOutput out)

  Serialises out the String. There are special rules about where we can and can't split onto Continue records.

### compareTo

    public int compareTo(UnicodeString str)

  Specified by:
    `compareTo` in interface `java.lang.Comparable<UnicodeString>`

### clone

    public java.lang.Object clone()

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

Copyright 2012 The Apache Software Foundation or its licensors, as applicable.