概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## ts.util.text
クラス StringSequence

    java.lang.Object
      ts.util.text.StringSequence

すべての実装されたインタフェース:
  java.lang.Cloneable

    public final class StringSequence

extends java.lang.Object
implements java.lang.Cloneable

文字列をコード・ポイント単位に順次アクセスするためのクラス。
Unicodeの補助文字の対応(JSR-204)により、文字と`char`変数が 必ずしも対応しなくなり、文字列操作におけるインデックスの扱いが複雑に なった。このクラスは、そのインデックスの扱いを簡単にするための仕組みを `StringOperation`とともに用意する。
文字列中のインデックスを、コード・ポイントごとに進めたり戻したりして、 そのインデックスに位置する文字を取得したり、そのインデックスから開始する 部分文字列を取得したりすることができる。
インデックスの取り得る値の範囲は、`-1〜n` （n はコード・ポイント単位 の文字列長）であり、インデックスが`-1`又は`n`の場合は、それに 位置する文字として空文字列を返す。
先頭から文字を順番に取得する方法は、以下のように行うことができる：``

         for (StringSequence seq = new StringSequence(aStr);
             seq.validIndex(); seq.next()) {
           String chStr = seq.character();     // 文字を順に取得。
           String subStr = seq.substring();    // 現在のインデックスから開始する部分文字列を取得。
           ...
         }

         あるいは

         StringSequence seq = new StringSequence(aStr, -1);
         while (seq.hasNext()) {
           seq.next();
           String ch = seq.character();      // 文字を順に取得。
           String subStr = seq.substring();  // 現在のインデックスから開始する部分文字列を取得。
           ...
         }

         あるいは

         if (! StringOperation.isEmpty(aStr)) {
           StringSequence seq = new StringSequence(aStr, -1);
           do {
             String chStr = StringOperation.characterAt(seq.index() + 1); // 文字を順に取得。
             String subStr = seq.followingString();  // 現在のインデックスの次から開始する部分文字列を取得。
             ...
           } while (seq.next().validIndex());
         }

上記の例は、いずれも同じ文字や文字列の値が得られる。

バージョン:
  $Revision: 1.1.1.1 $, $Date: 2010-10-16 00:03:53 $
作成者:
  佐藤隆之.

コンストラクタの概要
`` | `StringSequence(java.lang.String str)` 操作対象の文字列を引数にとるコンストラクタ。
`` | `StringSequence(java.lang.String str, int beginCodePointIndex)` 操作対象の文字列と開始インデックスを引数にとるコンストラクタ。
`protected` | `StringSequence(StringSequence seq)` コピー・コンストラクタ。

メソッドの概要
`java.lang.String` | `character()` 現在のインデックスに位置する文字を取得する。
`boolean` | `contains(java.lang.String searched)` 現在のインデックスから文末までの部分文字列に、探索文字列が含まれているか どうかを判定する。
`StringSequence` | `copy()` このオブジェクトのコピーを作成する。
`boolean` | `endsWith(java.lang.String suffix)` 現在のインデックスから文末までの部分文字列の末尾が、サフィックスと一致する かどうかを判定する。
`boolean` | `equals(java.lang.Object obj)` 文字列の内容が等しいかどうかを確認する。
`java.lang.String` | `followingString()` 現在のインデックスの次から開始する部分文字列を取得する。
`java.lang.String` | `followingString(StringSequence endSeq)` 現在のインデックスの次から、指定された`StringSequence`の示すインデックスの前までの部分文字列を取得する。
`int` | `hashCode()` このオブジェクトのハッシュ・コード値を取得する。
`boolean` | `hasNext()` 後続の文字が存在するかどうかを確認する。
`boolean` | `hasPrevious()` 前に文字が存在するかどうかを確認する。
`int` | `index()` 現在のインデックスを取得する。
`int` | `indexOf(java.lang.String searched)` 現在のインデックスから文末までの文字列中で、探索文字列に最初に一致する インデックスを取得する。
`int` | `lastIndexOf(java.lang.String searched)` 現在のインデックスから文末までの文字列中で、探索文字列に最後に一致する インデックスを取得する。
`StringSequence` | `next()` インデックスを、コード・ポイント１つ分次に進める。
`StringSequence` | `next(int codePointCount)` インデックスを、指定された文字数分だけ次に進める。
`StringSequence` | `nextUntil(java.lang.String searched)` 指定された探索文字列が見つかるまで、インデックスを次に進める。
`StringSequence` | `previous()` インデックスをコード・ポイント１つ分前に戻す。
`StringSequence` | `previous(int codePointCount)` インデックスを、指定された文字数分だけ前に戻す。
`int` | `restLength()` 現在のインデックスから文末までの文字列の長さを取得する。
`StringSequence` | `skipWhitespaces()` 空白でない文字が現れるまで、インデックスを次に進める。
`boolean` | `startsWith(java.lang.String prefix)` 現在のインデックスから文末までの部分文字列の先頭が、プリフィックスと一致 するかどうかを判定する。
`java.lang.String` | `startsWithOneOf(java.util.Collection<java.lang.String> strs)` 現在のインデックスから文末までの部分文字列の先頭が、指定された文字列集合 の要素のいずれかと一致するかどうかを判定する。
`StringSequence` | `startsWithOneOf(java.util.Collection<StringSequence> seqs)` 現在のインデックスから文末までの部分文字列の先頭が、指定された文字列集合 の要素のいずれかと一致するかどうかを判定する。
`java.lang.String` | `substring()` 現在のインデックスから開始する部分文字列を取得する。
`java.lang.String` | `substring(StringSequence endSeq)` 現在のインデックスから、指定された`StringSequence`の示すインデックスの前までの部分文字列を取得する。
`boolean` | `validIndex()` 現在のインデックスが範囲内（0〜n-1、nはコード・ポイント単位の文字列長） にあるかどうかを確認する。

クラス java.lang.Object から継承されたメソッド
`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

コンストラクタの詳細

### StringSequence

    public StringSequence(java.lang.String str)

  操作対象の文字列を引数にとるコンストラクタ。

  パラメータ:
    `str` - 操作対象の文字列。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### StringSequence

    public StringSequence(java.lang.String str,
                          int beginCodePointIndex)
                   throws java.lang.IndexOutOfBoundsException

  操作対象の文字列と開始インデックスを引数にとるコンストラクタ。
  なお、ここでいうインデックスとは、コード・ポイント単位の先頭からの順番 である。インデックスの取り得る範囲は、`-1〜n`（nはコード・ポイント 単位の文字列長）である。

  パラメータ:
    `str` - 操作対象の文字列。
    `beginCodePointIndex` - 開始インデックス。
  例外:
    `java.lang.IndexOutOfBoundsException` - 開始インデックスが範囲外の場合。
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### StringSequence

    protected StringSequence(StringSequence seq)

  コピー・コンストラクタ。

  パラメータ:
    `seq` - `StringSequence`オブジェクト。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

メソッドの詳細

### copy

    public StringSequence copy()

  このオブジェクトのコピーを作成する。

  戻り値:
    このオブジェクトのコピー。

### equals

    public boolean equals(java.lang.Object obj)

  文字列の内容が等しいかどうかを確認する。
  現在のインデックスから開始する部分文字列の値を比較して、それが等しい場合 は`true`を、等しくない場合は`false`を返す。
  引数が `StringSequence`オブジェクトで ない場合は常に`false`を返す。

  オーバーライド:
    クラス `java.lang.Object` 内の `equals`
  パラメータ:
    `obj` - 比較を行う`StringSequence` オブジェクト。
  戻り値:
    現在のインデックスによる値が等しい場合は`true`を返す。

### hashCode

    public int hashCode()

  このオブジェクトのハッシュ・コード値を取得する。

  オーバーライド:
    クラス `java.lang.Object` 内の `hashCode`
  戻り値:
    ハッシュ・コード値。

### validIndex

    public boolean validIndex()

  現在のインデックスが範囲内（0〜n-1、nはコード・ポイント単位の文字列長） にあるかどうかを確認する。
  なお、ここでいうインデックスとは、コード・ポイント単位の値をいう。

  戻り値:
    現在のインデックスが範囲内にある場合は`true`を返す。

### hasNext

    public boolean hasNext()

  後続の文字が存在するかどうかを確認する。

  戻り値:
    後続の文字が存在すれば`true`を返す。

### hasPrevious

    public boolean hasPrevious()

  前に文字が存在するかどうかを確認する。

  戻り値:
    前に文字が存在すれば`true`を返す。

### next

    public StringSequence next()

  インデックスを、コード・ポイント１つ分次に進める。
  インデックスの取り得る範囲は-1〜n（nはコード・ポイント単位の文字列長）で あり、次に進めるとこの範囲から外れる場合は、インデックスを移動しない。
  なお、ここでいうインデックスとは、コード・ポイント単位の値をいう。

  戻り値:
    インデックスを移動した後のこのオブジェクト。

### next

    public StringSequence next(int codePointCount)

  インデックスを、指定された文字数分だけ次に進める。
  引数に負の値を指定した場合は、指定された文字数分前に戻す。
  インデックスの取り得る範囲は-1〜n（nはコード・ポイント単位の文字列長）で あり、次に進めるとこの範囲から外れる場合は、-1又はnにリミットをかける。
  なお、ここでいうインデックスや文字数は、コード・ポイント単位の値をいう。

  パラメータ:
    `codePointCount` - 次に進める文字数。
  戻り値:
    インデックスを移動した後のこのオブジェクト。

### previous

    public StringSequence previous()

  インデックスをコード・ポイント１つ分前に戻す。
  インデックスの取り得る範囲は-1〜n（nはコード・ポイント単位の文字列長）で あり、前に戻すとこの範囲から外れる場合は、インデックスを移動しない。
  なお、ここでいうインデックスとは、コード・ポイント単位の値をいう。

  戻り値:
    インデックスを移動した後のこのオブジェクト。

### previous

    public StringSequence previous(int codePointCount)

  インデックスを、指定された文字数分だけ前に戻す。
  インデックスに負の値を指定した場合は、指定された文字数分次に進める。
  インデックスの取り得る範囲は-1〜n（nはコード・ポイント単位の文字列長）で あり、前に戻すとこの範囲から外れる場合は、-1又はnにリミットをかける。
  なお、ここでいうインデックスや文字数は、コード・ポイント単位の値をいう。

  パラメータ:
    `codePointCount` - 前に戻す文字数。
  戻り値:
    インデックスを移動した後のこのオブジェクト。

### index

    public int index()

  現在のインデックスを取得する。
  なお、ここでいうインデックスとは、コード・ポイント単位の値をいう。

  戻り値:
    現在のインデックス。

### character

    public java.lang.String character()

  現在のインデックスに位置する文字を取得する。
  なお、ここでいう文字とは、コード・ポイントに対応する値をいう。

  戻り値:
    現在のインデックスに位置する文字。

### substring

    public java.lang.String substring()

  現在のインデックスから開始する部分文字列を取得する。

  戻り値:
    現在のインデックスから開始する部分文字列。

### substring

    public java.lang.String substring(StringSequence endSeq)
                               throws java.lang.IndexOutOfBoundsException

  現在のインデックスから、指定された`StringSequence`の示すインデックスの前までの部分文字列を取得する。
  現在のインデックスに位置する文字は、部分文字列に含まれる。 また、引数のオブジェクトが示すインデックスに位置する文字は、部分文字列に 含まれない。
  このメソッドは、以下の操作と同様である:`

           StringOperatin.substring(this.substring(), 0, endSeq.index())

  `

  パラメータ:
    `endSeq` - 取得する部分文字列の終了インデックスを保持する`StringSequence`オブジェクト。
  戻り値:
    このオブジェクトが参照する文字列の部分文字列。
  例外:
    `java.lang.IndexOutOfBoundsException` - 引数の`StringSequence`がこのオブジェクトよりも前のインデックスを指して いる場合。
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### followingString

    public java.lang.String followingString()

  現在のインデックスの次から開始する部分文字列を取得する。

  戻り値:
    現在のインデックスの次から開始する部分文字列。

### followingString

    public java.lang.String followingString(StringSequence endSeq)
                                     throws java.lang.IndexOutOfBoundsException

  現在のインデックスの次から、指定された`StringSequence`の示すインデックスの前までの部分文字列を取得する。
  現在のインデックスに位置する文字は、部分文字列に含まれない。 また、引数のオブジェクトが示すインデックスに位置する文字は、部分文字列に 含まれない。
  このメソッドは、以下の操作と同様である:`

           StringOperatin.substring(this.substring(), 1, endSeq.index())

  ` 但し、現在のインデックスと引数のオブジェクトの示すインデックスが等しい場合 は空文字列を返す。

  パラメータ:
    `endSeq` - 取得する部分文字列の終了インデックスを保持する`StringSequence`オブジェクト。
  戻り値:
    このオブジェクトが参照する文字列の部分文字列。
  例外:
    `java.lang.IndexOutOfBoundsException` - 引数の`StringSequence`がこのオブジェクトよりも前のインデックスを指して いる場合。
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### restLength

    public int restLength()

  現在のインデックスから文末までの文字列の長さを取得する。
  なお、ここでいうインデックスとは、コード・ポイント単位の値をいう。

  戻り値:
    現在のインデックスから文末までの文字列の長さ。

### indexOf

    public int indexOf(java.lang.String searched)

  現在のインデックスから文末までの文字列中で、探索文字列に最初に一致する インデックスを取得する。
  探索文字列が見つからなかった場合は、負の値を返す。
  なお、ここでいうインデックスとは、コード・ポイント単位の先頭からの順番 （０から開始）である。
  このメソッドは、以下の操作と同様である （探索文字列が見つかる場合）:`

           this.index() + StringOperation.indexOf(this.substring(), searched)

  `

  パラメータ:
    `searched` - 探索文字列。
  戻り値:
    探索文字列に最初に一致するインデックス。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### lastIndexOf

    public int lastIndexOf(java.lang.String searched)

  現在のインデックスから文末までの文字列中で、探索文字列に最後に一致する インデックスを取得する。
  探索文字列が見つからなかった場合は、負の値を返す。
  なお、ここでいうインデックスとは、コード・ポイント単位の先頭からの順番 （０から開始）である。
  このメソッドは、以下の操作と同様である （探索文字列が見つかる場合）:`

           this.index() + StringOperation.lastIndexOf(this.substring(), searched)

  `

  パラメータ:
    `searched` - 探索文字列。
  戻り値:
    探索文字列に最後に一致するインデックス。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### startsWith

    public boolean startsWith(java.lang.String prefix)

  現在のインデックスから文末までの部分文字列の先頭が、プリフィックスと一致 するかどうかを判定する。

  パラメータ:
    `prefix` - プリフィックス。
  戻り値:
    プリフィックスと一致する場合は`true`を返す。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### endsWith

    public boolean endsWith(java.lang.String suffix)

  現在のインデックスから文末までの部分文字列の末尾が、サフィックスと一致する かどうかを判定する。

  パラメータ:
    `suffix` - サフィックス。
  戻り値:
    サフィックスが一致する場合は`true`を返す。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### startsWithOneOf

    public java.lang.String startsWithOneOf(java.util.Collection<java.lang.String> strs)

  現在のインデックスから文末までの部分文字列の先頭が、指定された文字列集合 の要素のいずれかと一致するかどうかを判定する。
  一致した場合はその文字列を返し、一致する文字列が存在しなかった場合はヌル を返す。

  パラメータ:
    `strs` - 文字列集合。
  戻り値:
    一致した文字列。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合、又は文字列集合の中にヌル又は 空文字列が含まれている場合（デバッグ・モードのみ）。

### startsWithOneOf

    public StringSequence startsWithOneOf(java.util.Collection<StringSequence> seqs)

  現在のインデックスから文末までの部分文字列の先頭が、指定された文字列集合 の要素のいずれかと一致するかどうかを判定する。
  一致した場合はその文字列を返し、一致する文字列が存在しなかった場合はヌル を返す。

  パラメータ:
    `seqs` - 文字列集合。
  戻り値:
    一致した文字列。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合、又は文字列集合の中にヌル又は 空文字列が含まれている場合（デバッグ・モードのみ）。

### contains

    public boolean contains(java.lang.String searched)

  現在のインデックスから文末までの部分文字列に、探索文字列が含まれているか どうかを判定する。

  パラメータ:
    `searched` - 探索文字列。
  戻り値:
    探索文字列が含まれている場合は`true`を返す。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### nextUntil

    public StringSequence nextUntil(java.lang.String searched)

  指定された探索文字列が見つかるまで、インデックスを次に進める。
  探索文字列が見つからなかった場合は、インデックスの値がn（＝コード・ ポイント単位の文字列長）になる。

  パラメータ:
    `searched` - 探索文字列。
  戻り値:
    インデックスを移動した後のこのオブジェクト。
  例外:
    `java.lang.AssertionError` - 引数がヌルの場合（デバッグ・モードのみ）。

### skipWhitespaces

    public StringSequence skipWhitespaces()

  空白でない文字が現れるまで、インデックスを次に進める。
  移動後のインデックスは、スキップを開始してから最初に現れた空白でない文字 を指している。
  文字列の最後まで空白文字が続く場合は、インデックスの値がn（＝コード・ ポイント単位の文字列長）になる。

  戻り値:
    インデックスを移動した後のこのオブジェクト。

概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

Copyright (C) SATOH Takayuki All Rights Reserved.