數(shù)量少還好,多的話就密密麻麻的一坨文字,講究美觀的文藝青年們,會(huì)用大量的字符連接符號(hào)甚至加上縮進(jìn),強(qiáng)制換成好幾行。例如:
這還好,要是字符串里有不少雙引號(hào)單引號(hào),那就更麻煩了,各種轉(zhuǎn)義字符看的眼花繚亂。
其實(shí)有個(gè)不怎么起眼的小技巧,就能解決這個(gè)問題。大家總認(rèn)為字符串必須在"..."或'...'里面,這點(diǎn)沒錯(cuò)。但還有一個(gè)地方的字符串也能當(dāng)非代碼語(yǔ)義保存下來,那就是一個(gè)function的toString,把整個(gè)函數(shù)的代碼當(dāng)字符串輸出――其中的注釋部分當(dāng)然也是保留的!
所以我們寫個(gè)空函數(shù),里面就一個(gè)/**/注釋,其中就是我們想要的常量?jī)?nèi)容。toString后加一個(gè)正則就可以提取我們想要的!
馬上試試:
int main()
{
std::cout << "Hello world" << std::endl;
return 0;
}
*/});
var RES_POEM = _TEXT(function(){/*
更吹落,星如雨。
寶馬雕車香滿路。
鳳簫聲動(dòng),玉壺光轉(zhuǎn),一夜魚龍舞。
蛾兒雪柳黃金縷,
笑語(yǔ)盈盈暗香去。
眾里尋他千百度,
驀然回首,那人卻在燈火闌珊處。
*/});
var RES_XML = _TEXT(function(){/*
<projectDescription>
<name>Hello</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.adobe.flexbuilder.project.flexbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.adobe.flexbuilder.project.apollobuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
</projectDescription>
*/});
function _TEXT(wrap) {
return wrap.toString().match(////*/s([/s/S]*)/s/*///)[1];
}
alert(RES_CODE);
alert(RES_POEM);
alert(RES_XML);
OK!就是Chrome里把注釋每行前面的Tab去掉了,如果僅僅是放代碼的話問題也不大~ 當(dāng)然有個(gè)前提是字符里不能出現(xiàn)*/
值得注意的是,壓縮代碼的時(shí)會(huì)過濾注釋,需要手動(dòng)排除一部分。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注