IRC メッセージを介してユーザーから入力を受け取る Java ボットに取り組んでいます。ユーザーが .host file=foo file=bar hostname="this is a name" のように入力すると、入力に基づいてサーバーが起動します。
現在、基本的にメッセージを解析し、hostname="" (引用符でカプセル化する必要があります) を探し、hostname= の部分を分割し、ホスト名を結果が何であれ (たとえば、hostname="this is) に設定するメソッドがあります。 a name" は -hostname 'this is a name' になります)。これを行うために正規表現を使用しています。
次に、文字列を (スペースで区切って) 配列に分割し、その情報を processbuilder に渡します。これにより、独自のスレッドでコマンドが実行されます。最終的なコマンドは次のようになります。
./server -hostname "これは名前です"
私が直面している問題は、スペースで分割しているため、ユーザーがホスト名にダッシュを追加すると (たとえば、hostname="this is - a name")、ダッシュが引数を参照していると見なされることです。 、そして基本的に残りを切り落とします。
詳細な説明: processbuilder はスペースで分割されるため、「-hostname」、「this」、「is」、「-」、「a」、「name」が渡されます。- は引数を渡す必要があることを意味しますが、それは私がそれを使用しているものではないため、これは私が問題を抱えている場所です。
渡される文字が文字通りこの文字だけになるようにこれを実装する最も効率的な方法は何でしょうか? スペースで分割するべきではありませんか? Linux シェルから ./server -hostname "this is - a name" を実行すると、正常に動作します。
すべての助けに感謝します。ありがとうございました!