2011-08-26 13 views
1

我很新到Java,讓我們說我有一個包含多件事情的一個字符串(引號,雙引號,新的生產線等)正確格式以Java String的適應一個JavaScript變量

我想以「編碼」是字符串,所以我可以將它輸出到安全的一個JavaScript片段,如:

var test = '<%= myJavaString %>'; 

所以,如果有任何特殊字符到myJavaString像換行,例如:

String myJavaString = "hello\neveryone\nof the\nworld"; 

我不希望我的JavaScript源的樣子:

var test = 'hello 
everyone 
of the 
world'; 

任何內置的功能!?

謝謝!

+0

只需要注意:呈現的javascript源代碼的**外觀**實際上並不重要 - 如果您的字符串有換行符,並且您希望將換行符傳遞給javascript,那麼它看起來就是這樣。誰將會看着你的渲染源?呈現的JavaScript是關於函數,而不是表單。只是說' –

+3

@克里斯 - 其實,它確實很重要。除非您在每行的末尾添加正斜槓,否則Javascript不會正確處理多行字符串。 –

+0

Theres沒有內置函數用於您的需求。這不可避免地導致下一個問題,那裏已經有了相同的代碼。 – Perception

回答

4

看看Apache commons-lang StringEscapeUtils class。它有一個escapeEcmaScript的方法,這將逃離換行字符\n,但也是選項卡,報價和雙引號字符。

+0

+1。 JSON編碼器是另一種可能性,如果您的項目中已經有一個編碼器。 – bobince

+0

我正在使用Spring ...也許它有一個!? –

+0

我不知道在Spring中有這樣的實用方法。但是使用Spring並不妨礙你使用commons-lang。 –

0

嗯,我不確定是否有任何可以使用的內置方法,但編寫一個方法可能不會太難。請記住,您只需將\n替換爲\\n即可將其從「特殊」字符更改爲\和n。您可能需要使用regular expressions。可悲的是,我並不擅長正則表達式,所以我可能不是最好的人來幫助你。

+0

感謝您的幫助,我不知道是誰低估了你我提出的解決方案。甚至認爲我接受了其他答案,謝謝。 –