从字符串JavaScript中删除tab('\t')

yuvru6vn  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(104)

如何在JavaScript中删除任何字符串中的tab?
当我得到字符串时,它是这样的缓冲区:

<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(...)构造函数。
如果我不使用它,我会得到对象没有方法替换。
假设content是我想要解析的字符串,它通过字母来解析它,意思是:

'\t session'

变成这样:

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

为什麽?

jv4diomz

jv4diomz1#

问题可能在于如何定义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','');

尝试

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

请注意,replace('\t', '')将仅替换第一次出现的\t。要执行全局替换,请使用RegExp Alex K。建议:

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

zynd9foi2#

您需要一个regexp来替换所有出现的项;

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"

相关问题