テクノロジー 開発 非公開: Java の部分文字列を理解する: 基本ガイド

Java の部分文字列を理解する: 基本ガイド

この記事では、Java の部分文字列を理解するのに役立ちます。理論的な説明だけでなく、視覚化に役立つ実際のコード例も示します。部分文字列を作成する方法と、文字列内の部分文字列を見つける方法を説明します。

ただし、部分文字列を学習する前に、部分文字列の基本を理解する必要があります。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

文字列と部分文字列とは何ですか?

Java のコンテキストでは、文字列は一連の文字を表します。 Java のすべての文字列はオブジェクトです。 Java の文字列には、文字、記号、さらには空白を含めることができます。一方、Java の部分文字列は、Java 文字列の一部またはサブセットです。

Javaの部分文字列
Javaの部分文字列

たとえば、「Geek」は「GeekFlare」の部分文字列です。部分文字列は、文字列の特定の部分を取得するのに役立ちます。

「John Doe」という名前があり、下の名前「John」だけが必要な場合は、部分文字列を使用して簡単に取得できます。さらに、「John、Jack、Jolly」という名前のリストがあり、その中に「John」が含まれているかどうかを調べたいとすると、部分文字列を使用してそれを行うこともできます。これらは単なる例にすぎません。部分文字列を理解すると、さまざまな操作で部分文字列を使用できるようになります。

Java の部分文字列の概念については理解できたので、次は Java で部分文字列を作成して操作する方法を見てみましょう。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

部分文字列の抽出

#1. 「substring()」メソッドの使用

「substring()」メソッドを使用すると、部分文字列を非常に簡単に作成できます。入力として最大 2 つのパラメータ ( startIndex 、または startIndex endIndex の 両方) を受け取り、必要な部分文字列を返します。

パラメータの数に応じて、2 つの方法で使用できます。それでは、それらについて詳しく見ていきましょう。

部分文字列(int startIndex)

まず、「substring(startIndex)」形式でメソッドを使用します。ここで、このメソッドは入力として整数値を受け取ります。入力は部分文字列の開始位置です。指定された開始インデックスから元の文字列の終わりまでの文字列を返します。

例として、次のコードを見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlare";    
    System.out.println("Given String: " + str);  
    System.out.println("Substring: " +str.substring(4)); //index of strings start from 0
    }  
   }

出力:

 Given String: GeekFlare
Substring: Flare

出力から、入力文字列が「GeekFlare」であり、戻り値が部分文字列「Flare」であることがわかります。指定されたインデックス (4)、つまり位置 5 から文字列の終わりまでの部分文字列を作成します。

substring(int startIndex, int endIndex)

これは、String クラスの substring メソッドを使用する別の方法です。 2 つの整数を substring メソッドに渡すことができます。開始インデックスと終了インデックス。これを使用するには、「substring(startIndex,endIndex)」形式のメソッドを使用する必要があります。

さらに理解するために、コード例を見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlareFans";    
    System.out.println("Given String: " + str);  
    System.out.println("Substring: " +str.substring(4,9));  //You get a substring starting from index no. 4 to index 8.

    }  
   }

出力:

 Given String: GeekFlareFans
Substring: Flare

見てわかるように、文字列「GeekFlareFans」を指定すると、部分文字列「Flare」が出力されます。開始インデックス 4 と終了インデックス 9 を指定しました。インデックス 4 の要素から始まり、9 より前で終了 します。終了インデックスの要素は出力されないことに注意する必要があります。 これにより、終了インデックスまでのすべての要素を含む部分文字列が得られますが、終了インデックスを持つ要素は除外されます。

#2. 「split()」メソッドの使用

「split()」は、部分文字列の作成に役立つ Java の String クラスのもう 1 つのメソッドです。これは、複数の情報が共通の区切り文字を使用して 1 つの文字列内に格納されている場合に便利です。

構文には「正規表現」という用語が含まれているため、少し怖く思えるかもしれません。続行する前に正規表現とは何かを理解しましょう。 Regex は「正規表現」の略語です。正規表現は、文字列またはテキスト内のパターンを説明する一連の文字です。 Split メソッドのコンテキストでは、正規表現が区切り文字となります。

「split()」メソッドは、入力として最大 2 つの変数を受け取ることができます。それらは、正規表現文字列と制限整数です。正規表現は区切り文字であり、これが見つかると、元の文字列が正規表現の前の部分と正規表現の後の部分の 2 つの部分に分割されます。

たとえば、文字列「abcdef」を正規表現として「bcd」で分割しようとしているとします。結果として部分文字列「a」と「ef」が得られます。

このメソッドは、分割された文字列を含む配列を返します。正規表現のみを指定することも、正規表現と制限の両方を指定することもできます。このメソッドを呼び出す複数の方法について 1 つずつ見ていきましょう。

分割(文字列正規表現)

最初のメソッドは、「split(regex)」形式の正規表現文字列のみを受け取ります。制限変数はありません。したがって、配列内の分離されたすべての部分文字列を返します。

いくつかのコードを使って明確に理解しましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare";
    String[] substrings=str.split("%");
    System.out.println("Given String: " + str);
    System.out.println("First Substring: " + substrings[0]);
    System.out.println("Second Substring: " + substrings[1]);
     
    }  
}

出力:

 Given String: Geek%Flare
First Substring: Geek
Second Substring: Flare

コードからわかるように、指定された文字列には区切り文字正規表現「%」が含まれています。単一の文字である必要はなく、任意の数の文字を含む任意の文字列を使用できます。 「split()」メソッドはこの正規表現を無視し、この正規表現で区切られたすべての文字列を返します。部分文字列は配列内に格納されます。

コードでは、指定された文字列は「Geek%Flare」です。したがって、「Geek」と「Flare」という 2 つの要素を含む配列が得られます。その後、それぞれのインデックス (それぞれ 0、1) を使用してそれらにアクセスし、「Geek」と「Flare」をコンソールに出力しました。

ここで、メソッドにパラメータが渡されない場合、単にエラーがスローされることにも注意してください。しかし、空の文字列 (“”) を正規表現として指定すると、すべての個々の文字が部分文字列として取得されます。視覚化する例を見てみましょう。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare";
    String[] substrings=str.split("");
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [G, e, e, k, %, F, l, a, r, e]

この例から、正規表現パラメータが空の文字列であることは明らかであり、すべての文字を個別の部分文字列として返します。これは、「split()」メソッドの出力配列を出力することで明確に確認できます。

分割(文字列正規表現、int制限)

このメソッドの 2 番目の変形では、出力をより詳細に制御できるようになり、「split()」メソッドの出力をさらに微調整できます。ここで、「split()」メソッドは 2 つの変数を入力として受け取ります。この場合、正規表現に加えて、「split(regex, limit)」という指定された形式で制限パラメーターも指定します。

「制限」は、出力される結果の文字列の数です。制限の値に応じて、次の 3 つの可能性が考えられます。

ケース 1: limit>0 の場合、 結果の配列には出力が含まれますが、最大でも分割 (limit-1) 回が適用されます。ここで、結果の配列には指定された制限を超える要素は含まれず、分割されていない残りの文字列はすべてそのまま保存されます。コードを使って理解しやすくしてみましょう。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%the%best";
    String[] substrings=str.split("%",2);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare%is%the%best]

出力では、結果の配列に、limit パラメーターで指定された数である 2 つの要素しかないことがわかります。また、分割は 1 回だけ適用されるので、(limit-1) 回であることに注意してください。

ただし、正規表現が 2 回連続して存在する場合 (「%%」)、空の部分文字列が含まれます。よりよく理解するには、このコードを見てください。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%%the%best%%%";
    String[] substrings=str.split("%",5);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare, is, , the%best%%%]

基本的に、「%」の後に別の「%」または文字列の末尾が続く場合、空の部分文字列に変換されます。


ケース 2: limit<0 の場合 、分割アクションは配列サイズに制限なく可能な限り何度でも適用されますが、正規表現が 2 回連続して存在する場合 (「%%」)、配列には空の部分文字列が含まれます。 )。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%%the%best%%%";
    String[] substrings=str.split("%",-1);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare, is, , the, best, , , ]

出力から、分割が可能な限り何度も適用されていること、および空の部分文字列が存在していることが明らかです。


ケース 3: limit=0 の場合、 分割アクションも可能な限り何度でも適用されますが、ここでは文字列の末尾にある空の部分文字列がすべて配列から破棄されます。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%%the%best%%%";
    String[] substrings=str.split("%",0);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare, is, , the, best]

出力は、limit=-1 の場合と limit=0 の場合で非常に似ていますが、末尾に空の部分文字列がないことがわかります。つまり、部分文字列配列の末尾にある空の部分文字列は無視されます。

また、文字列に正規表現が存在しない場合は、元の文字列全体が結果として返されることにも注意してください。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

文字列に部分文字列が含まれているかどうかを確認する

既存の文字列から部分文字列を作成するだけでなく、部分文字列を指定して、その部分文字列が文字列内に存在するかどうかを確認することもできます。これは部分文字列をクエリするための迅速かつ簡単な方法であり、多くのユースケースで役立ちます。しかし、どうやってそれを行うのでしょうか?これを達成するには、さまざまな方法が役立ちます。一つずつ見ていきましょう。

「contains()」メソッドを使用する:

「contains()」メソッドを使用すると、部分文字列の存在を非常に簡単に見つけることができます。 String クラスのこのメソッドは、部分文字列である文字列を入力として受け取り、部分文字列が文字列内にあるかどうかをチェックするブール値を返します。このメソッドは、if-else ブロック、単項演算子、その他のさまざまな場所で使用して、複雑なロジックを実装できます。

この方法についてもう少し詳しく見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlare";    
    System.out.println("Does it contain Flare? \n"+ str.contains("Flare"));  
    }  
}

出力:

 Does it contain Flare? 
true

このコードは、文字列「GeekFlare」で単語「Flare」をチェックし、それが正常に見つかるとブール値「true」を返し、部分文字列の存在を確認します。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlare";    
    System.out.println("Does it contain Flare? \n"+ str.contains("Flare1"));  
    }  
}

出力:

 Does it contain Flare? 
false

この例から、部分文字列が文字列内にない場合、メソッドはその部分文字列が存在しないことを示す false を返すことがわかります。したがって、部分文字列が存在するかどうかを簡単に確認できます。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

部分文字列の位置の検索

#1. 「indexOf()」の使用:

「indexOf()」メソッドは、部分文字列の存在とそのインデックスの検索に使用できます。このメソッドは入力として文字列または文字を受け取り、それが最初に出現する位置を返します。ただし、最初に発生したインデックスのみを提供でき、これが他に発生したかどうかを確認することはできません。ここでもう 1 つ注意すべき点は、部分文字列が存在しない場合、メソッドは -1 を返すということです。

そこで、この方法をもう少し詳しく見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlareGeekFlare";    
    System.out.println("Index of Flare: "+ str.indexOf("Flare"));  
    }  
}

出力:

 Index of Flare: 4

この例では、部分文字列「Flare」の最初の出現は、文字列「GeekFlareGeekFlare」のインデックス 4 から始まります。したがって、予想どおり、関数はインデックスを返しました。

#2. 「lastIndexOf()」の使用:

「lastIndexOf()」は「indexOf()」に非常に似ています。これらのメソッドは両方とも、部分文字列を入力として受け取り、その位置のインデックスを返します。指定された文字列内で部分文字列が見つからない場合でも、同じ戻り値が返されます。これらのメソッドは両方とも、検索が失敗した場合には -1 を返します。

ただし、「indexOf()」は部分文字列の最初の出現箇所のインデックスを返しますが、「lastIndexOf()」は最後の出現箇所を返します。

コードを通して実際の動作を見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlareGeekFlare";    
    System.out.println("Last index of Flare: "+ str.lastIndexOf("Flare"));  
    }  
}

出力:

 Last index of Flare:13

この出力を観察すると、メソッド「lastIndexOf()」が期待どおりに動作し、文字列「GeekFlareGeekFlare」内の部分文字列「Flare」が最後に出現したインデックスを取得していることがわかります。

よくある質問

「split()」メソッドを使用して空ではない部分文字列を作成するにはどうすればよいですか?

メイン文字列に正規表現文字列の複数の正規表現インスタンスが次々に存在する場合 (「Hello%%Hi」、正規表現は「%」)、「split()」メソッドは最初のインスタンスをブレー​​ク文字とみなします。残りは空の文字列を出力します。これを軽減するには、limit パラメータを 0 に指定します。したがって、空ではない文字列のみが出力として与えられます。

「indexOf()」は部分文字列のすべてのインスタンスのインデックスを返しますか?

いいえ、「indexOf()」は部分文字列のすべてのインスタンスのインデックスを返しません。 「indexOf()」を使用すると、最初に出現した部分文字列のインデックスを含む整数の戻り値が得られます。ただし、部分文字列が見つからない場合、メソッドは -1 を返します。

指定されたインデックスが 文字列に存在しない 場合、’substring()’ メソッドは何を返しますか ?

指定された開始インデックスと終了インデックスが文字列に存在しない場合、コンパイラはエラーをスローします。エラーには「java.lang.StringIndexOutOfBoundsException: 」が含まれているはずですが、単に実行されません。

結論

この記事では、部分文字列の使用を開始するためのさまざまな方法と基本事項について説明しました。部分文字列の作成と文字列内の部分文字列の存在の確認について説明しました。これにより、部分文字列の操作方法をより深く理解できるようになります。例に従ってさらに練習して、部分文字列を完全に理解してください。

次に、Java 面接の質問リストを確認してください。

「 Java の部分文字列を理解する: 基本ガイド」についてわかりやすく解説!絶対に観るべきベスト2動画

基本データ型と参照型:基本データ型全8種類と文字列(String)型の初心者向け解説【Java入門講座】2-3 データ型
はじめてのJava!完全入門【HelloWorld~オブジェクト指向まで7.5時間】

この記事では、Java の部分文字列を理解するのに役立ちます。理論的な説明だけでなく、視覚化に役立つ実際のコード例も示します。部分文字列を作成する方法と、文字列内の部分文字列を見つける方法を説明します。

ただし、部分文字列を学習する前に、部分文字列の基本を理解する必要があります。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

文字列と部分文字列とは何ですか?

Java のコンテキストでは、文字列は一連の文字を表します。 Java のすべての文字列はオブジェクトです。 Java の文字列には、文字、記号、さらには空白を含めることができます。一方、Java の部分文字列は、Java 文字列の一部またはサブセットです。

Javaの部分文字列
Javaの部分文字列

たとえば、「Geek」は「GeekFlare」の部分文字列です。部分文字列は、文字列の特定の部分を取得するのに役立ちます。

「John Doe」という名前があり、下の名前「John」だけが必要な場合は、部分文字列を使用して簡単に取得できます。さらに、「John、Jack、Jolly」という名前のリストがあり、その中に「John」が含まれているかどうかを調べたいとすると、部分文字列を使用してそれを行うこともできます。これらは単なる例にすぎません。部分文字列を理解すると、さまざまな操作で部分文字列を使用できるようになります。

Java の部分文字列の概念については理解できたので、次は Java で部分文字列を作成して操作する方法を見てみましょう。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

部分文字列の抽出

#1. 「substring()」メソッドの使用

「substring()」メソッドを使用すると、部分文字列を非常に簡単に作成できます。入力として最大 2 つのパラメータ ( startIndex 、または startIndex endIndex の 両方) を受け取り、必要な部分文字列を返します。

パラメータの数に応じて、2 つの方法で使用できます。それでは、それらについて詳しく見ていきましょう。

部分文字列(int startIndex)

まず、「substring(startIndex)」形式でメソッドを使用します。ここで、このメソッドは入力として整数値を受け取ります。入力は部分文字列の開始位置です。指定された開始インデックスから元の文字列の終わりまでの文字列を返します。

例として、次のコードを見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlare";    
    System.out.println("Given String: " + str);  
    System.out.println("Substring: " +str.substring(4)); //index of strings start from 0
    }  
   }

出力:

 Given String: GeekFlare
Substring: Flare

出力から、入力文字列が「GeekFlare」であり、戻り値が部分文字列「Flare」であることがわかります。指定されたインデックス (4)、つまり位置 5 から文字列の終わりまでの部分文字列を作成します。

substring(int startIndex, int endIndex)

これは、String クラスの substring メソッドを使用する別の方法です。 2 つの整数を substring メソッドに渡すことができます。開始インデックスと終了インデックス。これを使用するには、「substring(startIndex,endIndex)」形式のメソッドを使用する必要があります。

さらに理解するために、コード例を見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlareFans";    
    System.out.println("Given String: " + str);  
    System.out.println("Substring: " +str.substring(4,9));  //You get a substring starting from index no. 4 to index 8.

    }  
   }

出力:

 Given String: GeekFlareFans
Substring: Flare

見てわかるように、文字列「GeekFlareFans」を指定すると、部分文字列「Flare」が出力されます。開始インデックス 4 と終了インデックス 9 を指定しました。インデックス 4 の要素から始まり、9 より前で終了 します。終了インデックスの要素は出力されないことに注意する必要があります。 これにより、終了インデックスまでのすべての要素を含む部分文字列が得られますが、終了インデックスを持つ要素は除外されます。

#2. 「split()」メソッドの使用

「split()」は、部分文字列の作成に役立つ Java の String クラスのもう 1 つのメソッドです。これは、複数の情報が共通の区切り文字を使用して 1 つの文字列内に格納されている場合に便利です。

構文には「正規表現」という用語が含まれているため、少し怖く思えるかもしれません。続行する前に正規表現とは何かを理解しましょう。 Regex は「正規表現」の略語です。正規表現は、文字列またはテキスト内のパターンを説明する一連の文字です。 Split メソッドのコンテキストでは、正規表現が区切り文字となります。

「split()」メソッドは、入力として最大 2 つの変数を受け取ることができます。それらは、正規表現文字列と制限整数です。正規表現は区切り文字であり、これが見つかると、元の文字列が正規表現の前の部分と正規表現の後の部分の 2 つの部分に分割されます。

たとえば、文字列「abcdef」を正規表現として「bcd」で分割しようとしているとします。結果として部分文字列「a」と「ef」が得られます。

このメソッドは、分割された文字列を含む配列を返します。正規表現のみを指定することも、正規表現と制限の両方を指定することもできます。このメソッドを呼び出す複数の方法について 1 つずつ見ていきましょう。

分割(文字列正規表現)

最初のメソッドは、「split(regex)」形式の正規表現文字列のみを受け取ります。制限変数はありません。したがって、配列内の分離されたすべての部分文字列を返します。

いくつかのコードを使って明確に理解しましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare";
    String[] substrings=str.split("%");
    System.out.println("Given String: " + str);
    System.out.println("First Substring: " + substrings[0]);
    System.out.println("Second Substring: " + substrings[1]);
     
    }  
}

出力:

 Given String: Geek%Flare
First Substring: Geek
Second Substring: Flare

コードからわかるように、指定された文字列には区切り文字正規表現「%」が含まれています。単一の文字である必要はなく、任意の数の文字を含む任意の文字列を使用できます。 「split()」メソッドはこの正規表現を無視し、この正規表現で区切られたすべての文字列を返します。部分文字列は配列内に格納されます。

コードでは、指定された文字列は「Geek%Flare」です。したがって、「Geek」と「Flare」という 2 つの要素を含む配列が得られます。その後、それぞれのインデックス (それぞれ 0、1) を使用してそれらにアクセスし、「Geek」と「Flare」をコンソールに出力しました。

ここで、メソッドにパラメータが渡されない場合、単にエラーがスローされることにも注意してください。しかし、空の文字列 (“”) を正規表現として指定すると、すべての個々の文字が部分文字列として取得されます。視覚化する例を見てみましょう。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare";
    String[] substrings=str.split("");
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [G, e, e, k, %, F, l, a, r, e]

この例から、正規表現パラメータが空の文字列であることは明らかであり、すべての文字を個別の部分文字列として返します。これは、「split()」メソッドの出力配列を出力することで明確に確認できます。

分割(文字列正規表現、int制限)

このメソッドの 2 番目の変形では、出力をより詳細に制御できるようになり、「split()」メソッドの出力をさらに微調整できます。ここで、「split()」メソッドは 2 つの変数を入力として受け取ります。この場合、正規表現に加えて、「split(regex, limit)」という指定された形式で制限パラメーターも指定します。

「制限」は、出力される結果の文字列の数です。制限の値に応じて、次の 3 つの可能性が考えられます。

ケース 1: limit>0 の場合、 結果の配列には出力が含まれますが、最大でも分割 (limit-1) 回が適用されます。ここで、結果の配列には指定された制限を超える要素は含まれず、分割されていない残りの文字列はすべてそのまま保存されます。コードを使って理解しやすくしてみましょう。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%the%best";
    String[] substrings=str.split("%",2);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare%is%the%best]

出力では、結果の配列に、limit パラメーターで指定された数である 2 つの要素しかないことがわかります。また、分割は 1 回だけ適用されるので、(limit-1) 回であることに注意してください。

ただし、正規表現が 2 回連続して存在する場合 (「%%」)、空の部分文字列が含まれます。よりよく理解するには、このコードを見てください。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%%the%best%%%";
    String[] substrings=str.split("%",5);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare, is, , the%best%%%]

基本的に、「%」の後に別の「%」または文字列の末尾が続く場合、空の部分文字列に変換されます。


ケース 2: limit<0 の場合 、分割アクションは配列サイズに制限なく可能な限り何度でも適用されますが、正規表現が 2 回連続して存在する場合 (「%%」)、配列には空の部分文字列が含まれます。 )。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%%the%best%%%";
    String[] substrings=str.split("%",-1);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare, is, , the, best, , , ]

出力から、分割が可能な限り何度も適用されていること、および空の部分文字列が存在していることが明らかです。


ケース 3: limit=0 の場合、 分割アクションも可能な限り何度でも適用されますが、ここでは文字列の末尾にある空の部分文字列がすべて配列から破棄されます。

 import java.util.Arrays;

public class Substrings{    
    public static void main(String args[]){    
    String str="Geek%Flare%is%%the%best%%%";
    String[] substrings=str.split("%",0);
    System.out.println(Arrays.toString(substrings));
     
    }  
}

出力:

 [Geek, Flare, is, , the, best]

出力は、limit=-1 の場合と limit=0 の場合で非常に似ていますが、末尾に空の部分文字列がないことがわかります。つまり、部分文字列配列の末尾にある空の部分文字列は無視されます。

また、文字列に正規表現が存在しない場合は、元の文字列全体が結果として返されることにも注意してください。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

文字列に部分文字列が含まれているかどうかを確認する

既存の文字列から部分文字列を作成するだけでなく、部分文字列を指定して、その部分文字列が文字列内に存在するかどうかを確認することもできます。これは部分文字列をクエリするための迅速かつ簡単な方法であり、多くのユースケースで役立ちます。しかし、どうやってそれを行うのでしょうか?これを達成するには、さまざまな方法が役立ちます。一つずつ見ていきましょう。

「contains()」メソッドを使用する:

「contains()」メソッドを使用すると、部分文字列の存在を非常に簡単に見つけることができます。 String クラスのこのメソッドは、部分文字列である文字列を入力として受け取り、部分文字列が文字列内にあるかどうかをチェックするブール値を返します。このメソッドは、if-else ブロック、単項演算子、その他のさまざまな場所で使用して、複雑なロジックを実装できます。

この方法についてもう少し詳しく見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlare";    
    System.out.println("Does it contain Flare? \n"+ str.contains("Flare"));  
    }  
}

出力:

 Does it contain Flare? 
true

このコードは、文字列「GeekFlare」で単語「Flare」をチェックし、それが正常に見つかるとブール値「true」を返し、部分文字列の存在を確認します。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlare";    
    System.out.println("Does it contain Flare? \n"+ str.contains("Flare1"));  
    }  
}

出力:

 Does it contain Flare? 
false

この例から、部分文字列が文字列内にない場合、メソッドはその部分文字列が存在しないことを示す false を返すことがわかります。したがって、部分文字列が存在するかどうかを簡単に確認できます。

Java の部分文字列を理解する: 基本ガイド
Java の部分文字列を理解する: 基本ガイド

部分文字列の位置の検索

#1. 「indexOf()」の使用:

「indexOf()」メソッドは、部分文字列の存在とそのインデックスの検索に使用できます。このメソッドは入力として文字列または文字を受け取り、それが最初に出現する位置を返します。ただし、最初に発生したインデックスのみを提供でき、これが他に発生したかどうかを確認することはできません。ここでもう 1 つ注意すべき点は、部分文字列が存在しない場合、メソッドは -1 を返すということです。

そこで、この方法をもう少し詳しく見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlareGeekFlare";    
    System.out.println("Index of Flare: "+ str.indexOf("Flare"));  
    }  
}

出力:

 Index of Flare: 4

この例では、部分文字列「Flare」の最初の出現は、文字列「GeekFlareGeekFlare」のインデックス 4 から始まります。したがって、予想どおり、関数はインデックスを返しました。

#2. 「lastIndexOf()」の使用:

「lastIndexOf()」は「indexOf()」に非常に似ています。これらのメソッドは両方とも、部分文字列を入力として受け取り、その位置のインデックスを返します。指定された文字列内で部分文字列が見つからない場合でも、同じ戻り値が返されます。これらのメソッドは両方とも、検索が失敗した場合には -1 を返します。

ただし、「indexOf()」は部分文字列の最初の出現箇所のインデックスを返しますが、「lastIndexOf()」は最後の出現箇所を返します。

コードを通して実際の動作を見てみましょう。

 public class Substrings{    
    public static void main(String args[]){    
    String str="GeekFlareGeekFlare";    
    System.out.println("Last index of Flare: "+ str.lastIndexOf("Flare"));  
    }  
}

出力:

 Last index of Flare:13

この出力を観察すると、メソッド「lastIndexOf()」が期待どおりに動作し、文字列「GeekFlareGeekFlare」内の部分文字列「Flare」が最後に出現したインデックスを取得していることがわかります。

よくある質問

「split()」メソッドを使用して空ではない部分文字列を作成するにはどうすればよいですか?

メイン文字列に正規表現文字列の複数の正規表現インスタンスが次々に存在する場合 (「Hello%%Hi」、正規表現は「%」)、「split()」メソッドは最初のインスタンスをブレー​​ク文字とみなします。残りは空の文字列を出力します。これを軽減するには、limit パラメータを 0 に指定します。したがって、空ではない文字列のみが出力として与えられます。

「indexOf()」は部分文字列のすべてのインスタンスのインデックスを返しますか?

いいえ、「indexOf()」は部分文字列のすべてのインスタンスのインデックスを返しません。 「indexOf()」を使用すると、最初に出現した部分文字列のインデックスを含む整数の戻り値が得られます。ただし、部分文字列が見つからない場合、メソッドは -1 を返します。

指定されたインデックスが 文字列に存在しない 場合、’substring()’ メソッドは何を返しますか ?

指定された開始インデックスと終了インデックスが文字列に存在しない場合、コンパイラはエラーをスローします。エラーには「java.lang.StringIndexOutOfBoundsException: 」が含まれているはずですが、単に実行されません。

結論

この記事では、部分文字列の使用を開始するためのさまざまな方法と基本事項について説明しました。部分文字列の作成と文字列内の部分文字列の存在の確認について説明しました。これにより、部分文字列の操作方法をより深く理解できるようになります。例に従ってさらに練習して、部分文字列を完全に理解してください。

次に、Java 面接の質問リストを確認してください。

「 Java の部分文字列を理解する: 基本ガイド」についてわかりやすく解説!絶対に観るべきベスト2動画

基本データ型と参照型:基本データ型全8種類と文字列(String)型の初心者向け解説【Java入門講座】2-3 データ型
はじめてのJava!完全入門【HelloWorld~オブジェクト指向まで7.5時間】