Java でスペースを %20 に置き換える

Shubham Vora 2023年10月12日
  1. replaceAll() メソッドを使用して、Java でスペースを %20 に置き換えます
  2. StringBuilder クラスを使用して新しい文字列を作成し、Java でスペースを %20 に置き換える
Java でスペースを %20 に置き換える

この記事では、指定された文字列のすべてのスペースを %20 に置き換える 2つの方法を学びます。

replaceAll() メソッドを使用して、Java でスペースを %20 に置き換えます

ここでは、Java の組み込みメソッドである replaceAll() を使用して、すべてのスペースを %20 文字列に置き換えます。

この例では、文字列を作成し、その文字列を参照として replaceAll() メソッドを実行しました。

replaceAll() メソッドの構文:

string.replaceAll(oldString, newString);

ユーザーが replaceAll() メソッドの構文でわかるように、置換する必要がある最初のパラメーターとして文字列を受け取り、最初のパラメーターを置き換える 2 番目のパラメーターとして新しい文字列を取ります。

コード例:

class Test {
  public static void main(String[] args) {
    // given string
    String str = "Hello user!, Welcome to the DelftStack.   ";
    // replace spaces with %20
    str = str.replaceAll(" ", "%20");
    System.out.println(str);
  }
}

出力:

Hello%20user!,%20Welcome%20to%20the%20DelftStack.%20%20%20

上記の出力では、ユーザーは replaceAll() がすべてのスペースを %20 に置き換えたことを確認できます。文字列の末尾にあるすべてのスペースも同様です。 ユーザーが末尾からスペースを削除したい場合は、String ライブラリの trim() メソッドを使用する必要があります。

str = str.trim().replaceAll(" ", "%20");

出力:

Hello%20user!,%20Welcome%20to%20the%20DelftStack.

これで、ユーザーは上記の出力で trim() メソッドが最後からスペースを削除したことを確認できます。これが、replaceAll() メソッドが最後に %20 文字列を追加していない理由です。

時間の複雑さ

上記の例の時間計算量は O(n) です。ここで、n は文字列の長さを表します。 replaceAll() メソッドの時間計算量は O(n) です。

スペースの複雑さ

余分なスペースを使用していないため、上記のコードのスペースの複雑さは O(1) です。

StringBuilder クラスを使用して新しい文字列を作成し、Java でスペースを %20 に置き換える

このメソッドでは、StringBuilder() クラスを使用してカスタム長の文字列を作成します。 次の手順に従って、余分なスペースを使用してすべてのスペースを %20 文字列に置き換える必要があります。

  • StringBuilder クラスのオブジェクトを作成し、空の文字列で初期化します。 ここでは、resultString を作成しました。
  • for ループまたは while ループを使用して、指定された文字列を反復処理します。
  • 位置 i の文字が指定された文字列のスペースである場合、%20resultString に追加します。 それ以外の場合は、同じ文字を resultString に追加します。
  • 反復が完了したら、resultString を返すか出力します。

コード例:

class Test {
  public static void main(String[] args) {
    StringBuilder resultString = new StringBuilder("");
    // given string
    String str = "Java is One of the best Programming Language.";
    // Remove spaces from the end of the string.
    str = str.trim();
    // iterate through string
    for (int i = 0; i < str.length(); i++) {
      // if the character at position i is a string, append %20 to string builder. Otherwise, append
      // same character,
      if (str.charAt(i) == ' ') {
        resultString.append("%20");
      } else {
        resultString.append(str.charAt(i));
      }
    }
    // print the StringBuilder after appending
    System.out.println(resultString);
  }
}

出力:

Java%20is%20One%20of%20the%20best%20Programming%20Language.

時間の複雑さ

上記のアルゴリズムは、O(n) 時間計算量を持ちます。ここで、n は、文字列を繰り返し処理する際に指定された文字列の長さを指します。

スペースの複雑さ

StringBuilder() クラスを使用して新しい文字列を作成および格納するため、上記のアルゴリズムのスペースの複雑さは O(n) です。

特定の文字列の部分文字列または文字を新しい部分文字列に置き換える 2つの方法を学習しました。 最初の部分では、Java の組み込み replaceAll() メソッドを使用し、2 番目の部分でカスタム アルゴリズムを作成しました。

replaceAll() メソッドは使いやすく、1 行のコードで済むため、使用することをお勧めします。

著者: Shubham Vora
Shubham Vora avatar Shubham Vora avatar

Shubham is a software developer interested in learning and writing about various technologies. He loves to help people by sharing vast knowledge about modern technologies via different platforms such as the DelftStack.com website.

LinkedIn GitHub