『壹』 node JS中處理json字元串中含有轉義符號\ ,不能解析成json對象
使用JSON從後台向前台傳輸數據的時候,當數據本身含有一些特殊字元,會導致JSON數據的解析出錯。
使用下面的方法對即將向前台輸出的json字元串進行處理,可以解決鍵盤上能輸入的所有特殊字元問題。
//當文本中含有如下特殊字元時,此方法可以成功處理,讓其在前台被正確解析,注意:此法不能處理單引號
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ();
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
// case '\\': //如果不處理單引號,可以釋放此段代碼,若結合下面的方法處理單引號就必須注釋掉該段代碼
// sb.append("\\\\");
// break;
case '/':
sb.append("\\/");
break;
case '\b': //退格
sb.append("\\b");
break;
case '\f': //走紙換頁
sb.append("\\f");
break;
case '\n':
sb.append("\\n"); //換行
break;
case '\r': //回車
sb.append("\\r");
break;
case '\t': //橫向跳格
sb.append("\\t");
break;
default:
sb.append(c);
}}
return sb.toString();
}
//注意,下面的方法是在把你的數據文本接入json數據字元串之前使用,預先對文本做處理後在接入JSON字元串
//處理文本中的單引號 和 斜杠
public static String StringDanYinToJSON(String ors) {
ors = ors == null ? "" : ors;
StringBuffer buffer = new StringBuffer(ors);
int i = 0;
while (i < buffer.length()) {
if (buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {
buffer.insert(i, '\\');
i += 2;
} else {
i++;
}
}
return buffer.toString();
}
『貳』 nodejs怎麼獲取當前請求的日誌
functionreadLog(date,type,operation){//函數接受3個參數,日期、精度(天時分秒)和操作(查找、刷新或者默認)if(date){//如果有時間參數則對時間參數進行處理(一般日誌名稱都是時間加類型)vardataStr=arguments[0];vardate=dataStr.slice(0,10);varhour=dataStr.slice(11,13);varminute=dataStr.slice(11,16);varsecond=dataStr.slice(11,19);vartype=arguments[1];//獲取精度
}else{//若無時間參數則獲取當前時間,然後精度默認vardate=newDate(+newDate()+8*3600*1000).toISOString().replace(/T/g,'').replace(/.[d]{3}Z/,'').slice(0,10);vartype=null;
}varop=arguments[2];varcountResult=0;//對日誌結果進行統計varlogPath=appDirName.slice(0,-3)+'log\'+'ivsvr_'+date+'.log';//拼接日誌文件名稱varlogStr='';
fs.stat(logPath,function(err,stats){//獲取對應的日誌文件狀態if(err){//日誌不存在或者異常處理信息
$('#logTipInfotrtd').html('無日誌信息可供查看');console.log(err);
}else{varlineCount=0;varreadline=require('readline');varfReadName=logPath;varfRead=fs.createReadStream(fReadName);varobjReadline=readline.createInterface({input:fRead,
});//按行讀取日誌
objReadline.on('line',(line)=>{varitemStr=$.trim(line);vartime=itemStr.slice(0,19);varcontent=itemStr.substr(20);if(!time||!content){return;}
++lineCount;//計數行數varmatched=true;varitemStr=$.trim(line);varitemArr=itemStr.split('');varlogDate=itemArr[0];varlogTime=itemArr[1];vartime=logDate+''+logTime;switch(type){//進度查找過濾case'0':casenull:
matched=true;break;case'1':vartimeSplit=logTime.slice(0,2);if(timeSplit==hour){
matched=true;break;
}
matched=false;break;case'2':vartimeSplit=logTime.slice(0,5);if(timeSplit==minute){
matched=true;break;
}
matched=false;break;case'3':vartimeSplit=logTime.slice(0,8);if(timeSplit==second){
matched=true;break;
}
matched=false;break;default:console.log('unkonwtype!');break;
}if(matched===true&&(lineCount>logReadFlag)){//日誌結果格式化輸出呈現
countResult++;varresult=itemArr[2];if(result=='err'){varoperation=itemArr[4];
result='失敗:'+itemArr[5]+''+(itemArr[6]?itemArr[6]:'');
}else{varoperation=itemArr[4]+''+itemArr[5]+(itemArr[6]?itemArr[6]:'');
result='成功';
}
logStr+='<tr><td>'+time+'</td><td>'+operation+'</td><td>'+result+'</td></tr>'
}
logStr+='<tr><td>'+time+'</td><td>'+content+'</td></tr>'
});objReadline.on('close',()=>{if(logReadFlag==0&&(logStr=='')){varinfo='無日誌信息可供查看';
}if(logReadFlag>0&&(logStr!='')){varnewLogNum=lineCount-logReadFlag;varinfo='刷新成功,更新'+newLogNum+'條日誌!';
$('#logInfoTable').prepend(logStr);
}elseif(logReadFlag>0&&(logStr=='')){varinfo='刷新成功,無日誌更新!';
}else{
$('#logInfoTable').html(logStr);
}if(op=='search'){varinfo='查找到'+countResult+'條日誌';
}
$('#logTipInfotrtd').html(info);if((op=='search'||op=='refresh')&&(logReadFlag!=0||newLogNum>0||countResult>0)){
setTimeout(function(){$('#logTipInfo').fadeOut(567);},2000);//操作結束後給出信息反饋,反饋自動淡出消失
}else{
$('#logTipInfo').hide();
}
logReadFlag=lineCount;console.log('closed');
});
}
});
}
『叄』 nodejs 如何刷選出文本中的所有中文
通常使用JavaScript正則表達式進行匹配提取。基本處理步驟為:
處理編碼類型(可能需要轉碼處理)。node.js不能很好處理字元編碼問題(默認UTF8),而在Windows中文區,一般文件內容編碼大部分為GBK、GB2312之類的,你要轉碼為UTF8。(如果不存在編碼問題,自然不必處理)
讀取文本內容。
進行正則匹配中文部分。
最後進行處理(獲取中文、或者替換為其他之類的)。
//舉個例子
letreg=/[u4e00-u9fa5]/g;
letstr="中文123Abc";
letregResult=str.match(reg);
console.log(regResult)
『肆』 nodejs 判斷文件是不是文本文件
var fs = require("fs");var stat = fs.lstatSync("./xx");console.log(stat.isDirectory());如果返回結果為true則為文件夾。
『伍』 javascript nodejs cheerio怎麼從html中提取想要的內容
$('div.col.title a').prop('href')
『陸』 nodejs網路爬蟲怎麼過濾關鍵字
啟動terminal,運行"python /Cocos/Cocos2d-x-3.0beta2/tools/project-creator/create_project.py"。把工程命名為MaskedCal,然後選擇一個文件夾來保存,最後點Create。
接下來,請下載本工專程所需要的資源屬文件並把它們拖到你的Xcode的Resource分組中,確保「Copy items into destination group』s folder (if needed)」 並復選中,然後點Finish。
『柒』 Nodejs有沒有過濾器模塊
Node.js逐漸升溫,很多朋友已經開始關注。但是在Windows平台上需要基於Cygwin安裝配置環境,讓很多人望而卻步。
不過有消息稱Microsoft已經聯系Node.js官方,相信很快會有改善。
那麼在不安裝Cygwin的情況下,是否可以在Windows上搭建Node.js環境進行試驗開發哪看我以Node.js + express做了個簡單測試,基本可行。
步驟如下:
1. 下載Node.js官方非穩定版Windows可執行程序:
我在試驗中使用了0.5.7版本
2. 創建c:\nodejs目錄,並將node.exe保存在此目錄中
3. 下載express。因為依賴關系,我們還需要下載:connect、qs、mime和jade(express默認模板系統。如果你使用其他模板系統,需要下載相應系統)
4. 創建c:\nodejs\node_moles目錄,並在此目錄中分別創建[Mole]目錄。然後將上一步下載的文件壓縮,把相關文件拷貝到[Mole]目錄中。
node_moles
|- connect <= connect: lib/*
|- express <= express: lib/*
|- jade <= jade: lib/*
|- mime <= mime: mime.js & types/*
|- qs <= qs: lib/*
5. 在c:\nodejs\node_moles目錄,分別創建以下文件:
connect.js
內容:mole.exports = require('./connect/connect');
express.js
內容:mole.exports = require('./express/express');
jade.js
內容:mole.exports = require('./jade/jade');
mime.js
內容:mole.exports = require('./mime/mime');
qs.js
內容:mole.exports = require('./qs/querystring');
6. 將下載的express壓縮包中的bin/express文件拷貝到c:\nodejs目錄,並改名為express.js
7. 修改express.js文件,以下以2.4.3為例:
7.1. 修改mkdir函數體
401: exec('mkdir -p ' + path, function(err){
->exec('md ' + path, function(err){
7.2. 修改mkdir函數調用
263: mkdir(path + '/public/javascripts');
->mkdir(path + '\\public\\javascripts');
264: mkdir(path + '/public/images');
->mkdir(path + '\\public\\images');
265: mkdir(path + '/public/stylesheets', function(){
->mkdir(path + '\\public\\stylesheets', function(){
280: mkdir(path + '/views', function(){
->mkdir(path + '\\views', function(){
8. 創建一個express項目:
c:\nodejs\node.exe express.js -s hello
9. c:\nodejs\node_moles\*.* => c:\nodejs\hello\node_moles\
10. 運行並測試:
c:\nodejs\node.exe hello\app.js
在瀏覽器中打開:,查看結果。
至此測試完成。
下面給出測試文件,在測試文件中我還試驗了express session。可以在瀏覽器中打開:/session,查看結果。
『捌』 如何用nodejs打開本地文本文件並在網頁中顯示
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs");
http.createServer(function (req, res) {
var pathname=__dirname+url.parse(req.url).pathname;
if (path.extname(pathname)=="") {
pathname+="/";
}
if (pathname.charAt(pathname.length-1)=="/"){
pathname+="index.html";
}
path.exists(pathname,function(exists){
if(exists){
switch(path.extname(pathname)){
case ".html":
res.writeHead(200, {"Content-Type": "text/html"});
break;
case ".js":
res.writeHead(200, {"Content-Type": "text/javascript"});
break;
case ".css":
res.writeHead(200, {"Content-Type": "text/css"});
break;
case ".gif":
res.writeHead(200, {"Content-Type": "image/gif"});
break;
case ".jpg":
res.writeHead(200, {"Content-Type": "image/jpeg"});
break;
case ".png":
res.writeHead(200, {"Content-Type": "image/png"});
break;
default:
res.writeHead(200, {"Content-Type": "application/octet-stream"});
}
fs.readFile(pathname,function (err,data){
res.end(data);
});
} else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("<h1>404 Not Found</h1>");
}
});
}).listen(8080, "127.0.0.1");
console.log("Server running at http://127.0.0.1:8080/");
『玖』 Nodejs 如何過濾掉特殊字元
將對象轉換成字元串,字元串里多個參數將用 『&' 分隔,將用 『=' 賦值。
這個函數的操作和 querystring.parse() 是相反的,具體可以看一下例子就了解了。
『拾』 nodejs怎麼讀取log文件內容
用ajax就可以了~把log文件當做文本讀取就可以了~不過這個東西讀出來應該沒有什麼格式可循,就是一片字字元串,很難看的~除非你的log文件遵循json或者XML格式,否則是無法排列的~