String.subSequence()
次の javadoc があります。
このシーケンスのサブシーケンスである新しい文字シーケンスを返します。
フォームのこのメソッドの呼び出し
str.subSequence(begin, end)
呼び出しとまったく同じように動作します
str.substring(begin, end)
このメソッドは、String クラスが CharSequence インターフェースを実装できるように定義されています。
誰でも説明できますか?
String.subSequence()
次の javadoc があります。
このシーケンスのサブシーケンスである新しい文字シーケンスを返します。
フォームのこのメソッドの呼び出し
str.subSequence(begin, end)
呼び出しとまったく同じように動作します
str.substring(begin, end)
このメソッドは、String クラスが CharSequence インターフェースを実装できるように定義されています。
誰でも説明できますか?
サブシーケンス
サブシーケンスは、サブストリング、サフィックス、およびプレフィックスの一般化です。2 つ以上の文字列の部分列である最長の文字列を見つけることは、最長共通部分列問題として知られています。
例: 文字列「anna」は、文字列「banana」のサブシーケンスです。
banana
|| ||
an na
部分文字列
文字列の部分文字列は、文字列のサフィックスのプレフィックスであり、同等にプレフィックスのサフィックスです。ある文字列が別の文字列の部分文字列である場合、それはサブシーケンスでもあり、より一般的な概念です。
例: 文字列 "ana" は、2 つの異なるオフセットにあるバナナの部分文字列 (およびサブシーケンス) です。
banana
|||||
ana||
|||
ana
詳細はこちらをご覧ください。
しかし、Java に関する限り、javadocで明確に述べられているように、それらの使用に違いはありません。また、そこに記載されているように、メソッドはインターフェイスに準拠するようsubSequence
にクラスにのみ実装されています。そして、このメソッドの名前は実際には単なる誤称です。String
CharSequence
を使用すると、文字のシーケンスとして表される文字列の読み取り専用形式であるCharSequencestr.subSequence(begin, end)
が返されます。例えば:
String string = "Hello";
CharSequence subSequence = string.subSequence(0, 5);
の新しいインスタンスをインスタンス化せずにchars
内を変更することはできないという意味でのみ読み取られます。CharSequence
CharSequence
を使用する必要がある場合は、結果を:str.subSequence(begin, end)
にキャストできます。String
String string = "Hello";
String subSequence = (String) string.subSequence(0, 5);
そしてのようなすべての通常のString
演算子を使用しますsubSequence += " World";
String のソースを見ると、subsequence が実際に substring を呼び出していることがわかります。部分文字列と異なる唯一のことは、文字列を CharSequence にキャストすることです。
基本的には返されたものだけです。1 つは String で、もう 1 つは CharSequence (文字列としてキャストできます) です。
CharSequence 型の変数が必要な場合は、subSequence を使用します。