文字列をパラメーターとして受け取り、テキスト ファイル内の文字列を検索するプログラムがあります。
パラメータとして入力する場合を除いて、すべてが完全に機能*します。ディレクトリ内のすべてのファイル名を出力します。*パラメータとして入力すると、コードを通過しないようです。
何が起こっているか知っている人はいますか?
文字列をパラメーターとして受け取り、テキスト ファイル内の文字列を検索するプログラムがあります。
パラメータとして入力する場合を除いて、すべてが完全に機能*します。ディレクトリ内のすべてのファイル名を出力します。*パラメータとして入力すると、コードを通過しないようです。
何が起こっているか知っている人はいますか?
コマンドラインからファイルのグロブを渡している可能性が最も高いです。このリンクは興味深いかもしれません: http://en.wikipedia.org/wiki/Glob_(programming)#Syntax
基本的に言うと
java ... *
文字は(*シェルによって) 現在のディレクトリ内のファイルのリストに展開されます。これは、Java が*文字を認識する前に発生し、Java は代わりに「file1 file2 ...」を認識します。
*次のように、コマンド ラインで文字を一重引用符で囲むと役立つ場合があります。
'*'
またはそれをエスケープすることによって:
\*
シェルは*、プログラムに到達する前に展開しています。このようにエスケープしてみてください
bash$ java MyClass \*
- 正規表現*では特別な意味があります。
-\\その前に使用する必要があります。
例えば:
\\*