したがって、基本的には、javaなど、特殊文字(タブなど)を含む任意の文字列を正常に渡したいと思います。Javaのコマンドライン引数としてタブ文字を渡す
String tab = "\t";
//String tab = args[0];
String full = "hi"+tab+"hi"+tab+"bye";
String[] parts = full.split(tab);
String print = "";
for (String s : parts) {
print += s + tab;
}
print = print.substring(0, print.length()-tab.length());
System.out.println(print);
可変タブがどのように定義されているかにかかわらず、分割が正常に完了します。しかし、実際に印刷されると、手動でタブを定義する(コメントアウトされていないバージョン)タブ文字で期待どおりに印刷されます。しかし、コマンドラインを通過すると、実際には "\ t"(実際には文字列が "\\ t"の場合と同じです)が印刷されます。
私は主にbashを使用していますが、何が起こっているのかの一般的な説明も含まれていれば、もっとうれしいでしょう。なぜ文字列リテラルが異なるのですが、両方の正規表現は同じですか?
プログラムのbashの呼び出し:
ARGS="$X $Y $Z \t"
java -cp $CLASSPATH $MEM $PROGRAM $ARGS 2> "${PROGRAM##*.}-error.log" > "${PROGRAM##*.}-out.log"
ここで提供さ答えは実際にはほとんどが私の目的のために動作しない、唯一のかなり珍しいものを上の失敗、一般的にはかなり読みやすいです、そして:「\\\ tの」、のためにインスタンス:あなたは、コマンドラインで'\t'
または"\t"
を渡すとhttps://gist.github.com/uklimaschewski/6741769
私はあなたの質問を得るいけません。あなたは、あなたのJavaコードが別のプログラムを呼び出し、それに "本当の"タブを渡すことを望みますか? – GhostCat
このJavaコードをbashでどのように実行したのか投稿する必要があります – ymonad
@bhaal使用しているコマンドラインからサンプル呼び出しを追加できますか? – alainlompo