Удалить вкладку ('\ t') из строки JavaScript - PullRequest
20 голосов
/ 26 января 2012

Как я могу удалить tab из любой строки в javascript?

когда я получаю свою строку, она выглядит как буфер:

<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');

  }

, а затем я выполняю следующее...

например, у меня есть эти строки:

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

, и я просто хочу, чтобы это было:

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

кстати, когда я делаю:

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

Вот почему мне нужен конструктор String (...).

Если я не буду его использовать, то у объекта не будет метода замены.

предполагая, что содержимое - это строка, которую я хочу проанализировать, она анализирует ее по буквам, что означает:

'\t session'

становится таким:

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

почему?

Ответы [ 2 ]

24 голосов
/ 26 января 2012

Проблема, вероятно, заключается в том, как вы определяете content.

Если content=='\t session',

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

подразумевает, что content==' session'.

На сторонепримечание: String(...) не требуется.

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

достигает того же результата.

Редактировать:

String(array) не работаеткак вы ожидаете.

Вы должны либо выполнить замену перед тем, как разбивать строку, либо выполнить замену каждого элемента массива отдельно.

Вместо

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

try

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

Обратите внимание, что replace('\t', '') заменит только первое вхождение \t.Чтобы сделать глобальную замену, используйте RegExp, предложенный Алекс К.:

var content = data.toString().replace(/\t/g, '').split('\r\n');
23 голосов
/ 26 января 2012

Вам нужно регулярное выражение для замены всех вхождений;

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

(g является глобальным флагом)

/^\t+/ ограничивается заменой только начальных вкладок, /^\s+/ включает все начальные пробелы, которые вам понадобятся для "\t\t var" -> "var"

Обновление

Вы еще не сказали, как получен буфер и какой у него тип, насколько я могу судить, хотя принимать его странно;

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...