2012-01-26 39 views
12

Làm cách nào để xóa tab khỏi chuỗi bất kỳ trên javascript?Xóa tab (' t') khỏi chuỗi javascript

khi tôi nhận được chuỗi của tôi nói như một bộ đệm như thế này:

<Buffer 0d 0a 3c 25 72 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 20...> 

function translate(data) { 

    var content = data.toString().split('\r\n'); 

    } 

và sau đó tôi thực hiện như sau ...

ví dụ, tôi có những dòng này:

'\t\t var session = request.getSession();' 
'\t\t session["user"] = {};' 

và tôi chỉ muốn nó là:

'var session = request.getSession();' 
'session["user"] = {};' 

bằng cách này, khi tôi làm:

content=String(content).replace('\t',''); 

đây là lý do tại sao tôi cần các nhà xây dựng String (...).

nếu tôi không sử dụng, bị bệnh khiến đối tượng không có phương pháp thay thế.

nội dung giả định là chuỗi tôi muốn phân tích nó phân tích nó bằng ý nghĩa bức thư này:

'\t session' 

trở này:

's','e','s','s','i','o','n' 

tại sao?

+0

có thể trùng lặp [thay thế tất cả các lần xuất hiện trong chuỗi] (http://stackoverflow.com/questions/6064956/replace-all-occurrences- in-a-string) –

+0

Bạn nhận được một mảng các ký tự dường như không chắc (tôi không thể tạo lại nó), nhưng nó có thể liên quan đến thực tế là bạn đang sử dụng hàm tạo 'String()', không cần thiết. Chỉ cần làm 'content.replace (...)'. –

+0

Bạn có muốn 'eval' chuỗi đó không? –

Trả lời

18

Sự cố có thể là cách bạn xác định content.

Nếu content=='\t session',

`content=String(content).replace('\t','');` 

ngụ ý rằng content==' session'.

Trên ghi chú bên, String(...) là không cần thiết.

`content=content.replace('\t','');` 

đạt được kết quả tương tự.

Edit:

String(array) không hoạt động như bạn mong đợi.

Bạn phải thực hiện thay thế trước khi bạn chia chuỗi hoặc thực hiện thay thế trên mọi phần tử của mảng riêng biệt.

Thay vì

var content = data.toString().split('\r\n'); 
content=String(content).replace('\t',''); 

thử

var content = data.toString().replace('\t', '').split('\r\n'); 

Lưu ý rằng replace('\t', '') sẽ thay thế chỉ xuất hiện đầu tiên của \t. Để thay thế toàn cầu, hãy sử dụng RegExp Alex K. đề xuất:

var content = data.toString().replace(/\t/g, '').split('\r\n'); 
+0

dennis, điều là tôi nhận được nội dung như một bộ đệm, biến nó thành chuỗi bởi toString(); vì vậy tôi phải làm điều đó với các nhà xây dựng chuỗi ... bất kỳ ý tưởng khác làm thế nào để xử lý nó? – Itzik984

+0

Bạn có thể hiển thị cho chúng tôi mã xác định 'nội dung' không? – Dennis

+0

có bệnh chỉnh sửa nó – Itzik984

20

Bạn cần regexp để thay thế tất cả các lần xuất hiện;

content = content.replace(/\t/g, ''); 

(g là cờ toàn cầu)

/^\t+/ hạn chế để thay thế hàng đầu tab chỉ, /^\s+/ bao gồm bất kỳ khoảng trắng hàng đầu đó là những gì bạn sẽ cần cho "\t\t var" -> "var"

Cập nhật

Bạn chưa biết cách nhận bộ đệm & loại đó là gì, phỏng đoán gần nhất của tôi mặc dù nó là một điều kỳ lạ để nhận được;

var test_buffer_array = "\x0d \x0a \x3c \x25 \x72 \x65 \x73 \x70 \x6f \x6e \x73 \x65 \x2e \x73 \x74 \x61 \x74 \x75 \x73 \x20".split(" ") 

translate(test_buffer_array); 

function translate(data) { 
    var content = data.join("").replace(/^\t+/gm, ''); 
    print(content); 
} 

result: "<%response.status" 
+0

Alex, điều là tôi nhận được nội dung như một bộ đệm, biến nó thành chuỗi bởi toString(); vì vậy tôi phải làm điều đó với các nhà xây dựng chuỗi ... bất kỳ ý tưởng khác làm thế nào để xử lý nó? – Itzik984

+0

"Bộ đệm" là gì? Và một khi bạn đã sử dụng 'toString', bạn có một chuỗi, vì vậy vẫn không cần sử dụng hàm tạo như thế. –

+0

Bạn có thể 'var str = content.toString(). Replace (...);' Ví dụ của bạn về ''s', 'e', ​​'s', 's', 'i', 'o ',' n'' là kết quả của việc hiển thị một đối tượng mảng theo mặc định không hỗ trợ '.replace' .. if' toString() 'thất bại một cái gì đó là ghi đè/reimplementing một số phương pháp & bạn sẽ cần phải cung cấp thêm chi tiết 'content' –