1. 概要

この記事では、Javaの文字列から最初と最後の二重引用符を削除するためのさまざまなアプローチを検討します。

ここで説明する内容は、ファイルから抽出されたテキストや他のソースから受信したテキストを処理するのに役立ちます。

2. 簡単なアプローチ:substringメソッド

まず、部分文字列メソッドを使用したによる簡単なアプローチから始めましょう。 このメソッドは、 String オブジェクトで呼び出して、特定のサブ文字列を返すことができます。

このメソッドには2つのパラメーターが必要です。

  1. beginIndex —サブ文字列を開始する文字のインデックス
  2. endIndex —サブ文字列が終了する場所の後のインデックス

したがって、入力 String が二重引用符で囲まれていることを考慮すると、substringメソッドを使用できます。

String input = "\"text wrapped in double quotes\"";
String result = input.substring(1, input.length() - 1);
System.out.println("Input: " + input);
System.out.println("Result: " + result);

上記のコードを実行すると、次の出力が得られます。

Input: "text wrapped in double quotes"
Result: text wrapped in double quotes

String が二重引用符で囲まれるかどうかわからない場合は、substringメソッドを実行する前に確認する必要があります。

if (input != null && input.length() >= 2 
      && input.charAt(0) == '\"' && input.charAt(input.length() - 1) == '\"') {
    result = input.substring(1, input.length() - 1);
}

上記の例では、 String に少なくとも2文字が含まれていること、および二重引用符で開始および終了していることを確認します。

3. replaceAllメソッドの使用

substring メソッドに加えて、replaceAllメソッドを使用することもできます。 このメソッドは、指定された正規表現に一致する文字列のすべての部分を置き換えます。 replaceAll を使用すると、二重引用符の出現箇所をすべて空の文字列に置き換えることで削除できます。

String result = input.replaceAll("\"", "");

一方では、このアプローチには、文字列に複数の行がある場合でも、二重引用符の出現をすべて削除するという利点があります。 一方、このアプローチでは、文字列の最初と最後にある二重引用符のみを削除することはできません。

String、の最初と最後から二重引用符を削除するには、より具体的な正規表現を使用できます。

String result = input.replaceAll("^\"|\"$", "");

この例を実行した後、Stringの最初または最後にある二重引用符は空の文字列に置き換えられます。

このアプローチを理解するために、正規表現を分解してみましょう。

最初に、 String の先頭にある二重引用符に一致するように、キャレット記号(^)とそれに続くエスケープされた二重引用符(\”)があります。 次に、OR論理演算子と同様に、一致する代替を示すパイプ記号(|)があります。

最後に、 String の最後にある二重引用符に一致させるために、二重引用符の後にドル記号($)を付けてエスケープしました。

4. グアバの使用

String の最初と最後から二重引用符を削除する別の可能なアプローチは、GuavaライブラリのCharMatcherクラスを使用することです。

String result = CharMatcher.is('\"').trimFrom(input);

このアプローチは理解が簡単で、文字列から最初と最後の引用符のみを削除します。 ただし、このアプローチを機能させるには、guavaライブラリをプロジェクトに追加する必要があります。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>${guava-version}</version>
</dependency>

この場合、 ${guava-version}プロパティを使用するバージョンに設定する必要があります。

5. 結論

この記事では、 文字列の最初と最後の二重引用符を削除するためのさまざまな代替方法について説明しました。これらのアプローチは、実際に適用できます。 それぞれに長所と短所があります。

たとえば、Guavaライブラリを使用する場合、シンプルでエレガントなソリューションがあります。 ただし、Guavaがプロジェクトに含まれていなかった場合、このソリューションでは新しい依存関係を追加する必要があります。

いつものように、この記事で紹介するコードはGitHubから入手できます。