Itz*_*984 21 javascript string parsing
如何从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');
}
Run Code Online (Sandbox Code Playgroud)
然后我执行以下操作......
例如,我有这些线:
'\t\t var session = request.getSession();'
'\t\t session["user"] = {};'
Run Code Online (Sandbox Code Playgroud)
而我只是希望它是:
'var session = request.getSession();'
'session["user"] = {};'
Run Code Online (Sandbox Code Playgroud)
顺便说一下,当我这样做时:
content=String(content).replace('\t','');
Run Code Online (Sandbox Code Playgroud)
这就是我需要String(...)构造函数的原因.
如果我不使用它,生病得到对象没有方法替换.
假设content是我要解析的字符串,它按字母解析它意味着:
'\t session'
Run Code Online (Sandbox Code Playgroud)
成为这个:
's','e','s','s','i','o','n'
Run Code Online (Sandbox Code Playgroud)
为什么?
Den*_*nis 25
问题可能在于您如何定义content.
如果content=='\t session',
`content=String(content).replace('\t','');`
Run Code Online (Sandbox Code Playgroud)
意味着content==' session'.
另一方面,这String(...)是不必要的.
`content=content.replace('\t','');`
Run Code Online (Sandbox Code Playgroud)
实现相同的结果.
编辑:
String(array) 不像你期望的那样工作.
您必须在拆分字符串之前执行替换,或者分别对阵列的每个元素执行替换.
代替
var content = data.toString().split('\r\n');
content=String(content).replace('\t','');
Run Code Online (Sandbox Code Playgroud)
尝试
var content = data.toString().replace('\t', '').split('\r\n');
Run Code Online (Sandbox Code Playgroud)
请注意,replace('\t', '')它将仅替换第一次出现的\t.要进行全局替换,请使用RegExp Alex K.建议:
var content = data.toString().replace(/\t/g, '').split('\r\n');
Run Code Online (Sandbox Code Playgroud)
Ale*_* K. 23
你需要一个正则表达式来替换所有出现的事件;
content = content.replace(/\t/g, '');
Run Code Online (Sandbox Code Playgroud)
(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"
Run Code Online (Sandbox Code Playgroud)