2013-09-05 89 views
0

我正在編寫一個提醒應用程序,它顯示JTextArea中的特定文本。當您啓動java應用程序時,或者(如果沒有參數可用),可以通過另一個JTextArea自定義對話框將文本作爲consol argument傳遞,您可以在其中鍵入文本。JTextArea不會正確顯示新行 n

我想在我的提醒中有一段(新行)。當我按下JTextArea裏面的設置對話框中輸入它可以很好地工作。但是當我輸入Statement1\nStatement2時,它顯示的是正文而不是兩行(我無法在CONSOL中輸入回車,可以嗎?)。當我調試代碼時,它會將每個字符都轉換爲特殊字符,並將反斜槓轉換爲雙反斜槓,而不是將\ n作爲一個字符。所以字符\n將被分割爲\\n( - >無控制符號)。作爲論點的文本的CONSOL同樣發生。

我已經試過\n\r\n甚至\\n\\\n,但它需要特殊的每個字符並將其轉換。

我該如何實現Java知道反斜槓和n在一起?我怎樣才能得到一個新的線?

+1

我想你已經得到逃脫'''\'''從ARGS。你必須在那裏轉換它(用\ n替換\\ n)。 – NeplatnyUdaj

+0

我認爲這會有點不方便,但如果這樣做會有效,爲什麼不呢。 :) – Gaeburider

回答

1

如果你想使用\ n的命令行參數作爲分隔符,你必須替換它在你的代碼,因爲所有的字符轉義這種方式。 您可以嘗試類似:

public static void main(String[] args){ 
    String formattedString = args[0].replaceAll("\\\\n","\n"); 
    ... 
} 
+0

很好的方法來轉換逃逸'\\ n'。 – Gaeburider

2

這與Java無關。鍵入在Unix終端中輸入,將其用引號包圍,或在其前面加上反斜槓或鍵入Ctrl-V

$ echo "hello 
> world" 
hello 
world 

在Windows上,cmd.exe使用^作爲轉義代碼。

C:\>java ClassName param1^ 
More?               (press Enter) 
More? param2 
+0

很有趣,這是否也在DOS工作? – Gaeburider

+0

你的意思是在Windows'cmd.exe'中?這有點不同,請參閱更新。 – Joni

+0

啊哈,是的,我的意思是。謝謝 – Gaeburider