35

String.subSequence()次の javadoc があります。

このシーケンスのサブシーケンスである新しい文字シーケンスを返します。

フォームのこのメソッドの呼び出し

str.subSequence(begin, end)

呼び出しとまったく同じように動作します

str.substring(begin, end) 

このメソッドは、String クラスが CharSequence インターフェースを実装できるように定義されています。

誰でも説明できますか?

4

9 に答える 9

49

サブシーケンス

サブシーケンスは、サブストリング、サフィックス、およびプレフィックスの一般化です。2 つ以上の文字列の部分列である最長の文字列を見つけることは、最長共通部分列問題として知られています。

例: 文字列「anna」は、文字列「banana」のサブシーケンスです。

banana
 || ||
 an na

部分文字列

文字列の部分文字列は、文字列のサフィックスのプレフィックスであり、同等にプレフィックスのサフィックスです。ある文字列が別の文字列の部分文字列である場合、それはサブシーケンスでもあり、より一般的な概念です。

例: 文字列 "ana" は、2 つの異なるオフセットにあるバナナの部分文字列 (およびサブシーケンス) です。

banana
 |||||
 ana||
   |||
   ana

詳細はこちらをご覧ください

しかし、Java に関する限り、javadocで明確に述べられているように、それらの使用に違いはありません。また、そこに記載されているように、メソッドはインターフェイスに準拠するようsubSequenceにクラスにのみ実装されています。そして、このメソッドの名前は実際には単なる誤称です。StringCharSequence

于 2013-03-19T16:48:12.990 に答える
26

を使用すると、文字のシーケンスとして表される文字列の読み取り専用形式であるCharSequencestr.subSequence(begin, end)が返されます。例えば:

String string = "Hello";
CharSequence subSequence = string.subSequence(0, 5);

の新しいインスタンスをインスタンス化せずにchars内を変更することはできないという意味でのみ読み取られます。CharSequenceCharSequence

を使用する必要がある場合は、結果を:str.subSequence(begin, end)にキャストできます。String

String string = "Hello";
String subSequence = (String) string.subSequence(0, 5);

そしてのようなすべての通常のString演算子を使用しますsubSequence += " World";

于 2013-03-19T17:13:30.683 に答える
1

String のソースを見ると、subsequence が実際に substring を呼び出していることがわかります。部分文字列と異なる唯一のことは、文字列を CharSequence にキャストすることです。

于 2016-02-25T11:04:47.687 に答える
-1

基本的には返されたものだけです。1 つは String で、もう 1 つは CharSequence (文字列としてキャストできます) です。
CharSequence 型の変数が必要な場合は、subSequence を使用します。

于 2014-07-15T06:04:35.697 に答える