數量少還好,多的話就密密麻麻的一坨文字,講究美觀的文藝青年們,會用大量的字符連接符號甚至加上縮進,強制換成好幾行。例如:
Hello
' 'World'
''';
'
這還好,要是字串裡有不少雙引號單引號,那就更麻煩了,各種轉義字符看的眼花繚亂。其實有個不怎麼起眼的小技巧,就能解決這個問題。大家總認為字串必須在"..."或'...'裡面,這點沒錯。但還有一個地方的字串也能當非程式碼語意保存下來,那就是一個function的toString,把整個函數的程式碼當字串輸出──其中的註解部分當然也是保留的!
所以我們寫個空函數,裡面就一個/**/註釋,其中就是我們想要的常數內容。 toString後面加上一個正規則可以提取我們想要的!
var RES_CODE = _TEXT(function()///
OK!就是Chrome裡把註解每行前面的Tab去掉了,如果只是放程式碼的話問題也不大~ 當然有個前提是字元裡不能出現*/
#include
int main()
{
std::cout */});
var RES_POEM = _TEXT(function(){/*
更吹落,星如雨。
寶馬雕車香滿路。
鰫聲,鯪聲,一夜魚轉,龍舞。 );
var RES_XML = _TEXT(function(){/*
>
name>
*/});
function _TEXT(wrap) {
return wrap.toString().match(//*s([sS]*)s*//)[1];
}
alert(RES_CODE );
alert(RES_POEM);
alert(RES_XML);
值得注意的是,壓縮程式碼的時會過濾註釋,需要手動排除一部分。