2011-08-16 52 views
5

Tôi có đoạn code Node.js sau:nodejs: chuỗi thao tác

conn.on("data",function(x){ 
     var responseData=x; 
     //sys.puts(responseData); 
     sys.puts(responseData.length); 

     var f=50; 
     var N=responseData.length; 
     if(N>f){ 
     var p=Math.floor(N/f); 
     var p_rem=N%f; 

     var hash=""; 
     for(var i=0;i<p;i++){ 
      hash=DJBHash(responseData.substr(f*i,f)); //this line causes program to exit! 
      sys.puts(responseData.substr(f*i,f)+"***"+hash); 
     } 
     } 
     soc.write(x); 
    }); 

Nhưng substr không xuất hiện để làm việc!

Tôi làm cách nào để có được các chuỗi của một chuỗi trong node.js?

Nhiều cảm ơn trước,

+0

probablye của nó 'DJBHash' thất bại – Raynos

+0

Tôi nhận xét ra dòng ... Dòng tiếp theo là không tại ... – Eamorr

+0

thử 'Object.prototype.toString.call (responseData)' – Raynos

Trả lời

13

Dữ liệu biến là loại đệm, bạn sẽ phải tạo một chuỗi với phương thức toString và sau đó, bạn sẽ có thể để làm substr. Một cái gì đó như thế sẽ làm việc:

responseData.toString().substr(1) 

Để biết thêm thông tham khảo liên kết này:

http://nodejs.org/docs/v0.4.10/api/buffers.html#buffer.toString

+0

Xin chào, điều đó làm việc rất tốt. Tôi đã tự hỏi bạn có biết làm thế nào để đi từ một chuỗi trở lại loại "responseData" là? – Eamorr

+1

Theo tài liệu: 'new Buffer (myStr)' sẽ làm điều đó http://nodejs.org/docs/v0.4.10/api/buffers.html#new_Buffer –

+0

Và do đó, nó! Woop woop! Cảm ơn nhiều. Tôi không thể tìm thấy bất cứ điều gì trên google ... – Eamorr