1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】特殊文字を含めたコマンドライン引数の指定

Posted at

特殊文字を含めたコマンドライン引数の指定

についてまとめました。

指定方法

以下のような指定方法になります。

  • スペースを含めたい場合:ダブルクオーテーション 「""」で囲む
  • ダブルクオーテーションを文字として扱いたい場合:「\」で囲む

【説明】

Javaのコマンドライン引数は、スペースで区切って列挙しますが、「スペース自体を文字列として扱いたい」場合もあると思います。その場合は上記のように、ダブルクオーテーションや ¥ を使って区切ってあげます。

【実際に書いてみる】

スペース区切りで配列を取得

まずサンプルコードを用意しました。

public class Main {

    public static void main(String[] args) {
        // 先頭の配列だけを出力する
        System.out.println(args[0]);
    }
}

コマンドラインで以下のようにコンパイル→出力します。

java Main.java ルパン三世 次元大介 石川五エ門 峰不二子

実行結果は以下です。

ルパン三世

これはコマンドライン配列がスペース区切りでされるため、最初の引数である「ルパン三世」しか出力されていないためです。

スペースを文字列として扱う

ダブルクオーテーションで囲ってスペースを文字列として扱います。

先程のコマンドの配列すべてをダブルクオーテーションで囲いました。

コマンドラインで以下のようにコンパイル→出力します。

java Main.java "ルパン三世 次元大介 石川五エ門 峰不二子"

実行結果は以下です。

ルパン三世 次元大介 石川五エ門 峰不二子

ダブルクオーテーションで囲った部分が一つの配列として取得されました。

ちなみに、ダブルクオーテーションはエスケープされない限りデータとして扱われることはないのでそのポイントは抑えておく。

java Main.java "ルパン"三世

実行結果は以下です。

ルパン三世

ダブルクオーテーションを文字列にする

この場合は半角の「\」をダブルクオーテーションの前に使用します。

java Main.java \"ルパン三世\" 次元大介 石川五エ門 峰不二子

実行結果は以下です。

"ルパン三世"

【まとめ】

試験では以下の点に注意する

  • スペースが区切り記号に使われる
  • スペースを含む文字列はダブルクオーテーションでくくることで1つとして扱われる。
  • ダブルクオーテーションそのものは文字として扱わない。

気になるのは、ダブルクオーテーションを文字として扱う場合、なぜか¥が入力できなくて、\じゃないと出来なかったんですよね・・なぜだろう。

参考文献・記事

参考記事・資料

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?