【发布时间】:2015-02-11 00:21:01
【问题描述】:
我有一个带有转义字符的字符串:
var a = "Hello\ World";
我想将字符串拆分成一个字符数组,其中包含转义字符:
var a = "Hello\ World";
/* Do something here */
a; // I want output: ["H","e","l","l","o","\"," ","W","o","r","l","d"]
通常我使用以下方法拆分字符串:
a=a.split('');
但这当然行不通,因为在拆分过程中会忽略转义字符。
var a = "Hello\ World";
a=a.split('');
a; // outputs ["H","e","l","l","o"," ","W","o","r","l","d"]
现在我知道为了得到我想要的结果,我必须使用双重转义。我知道我的字符串应该是这样的:
var a = "Hello\\ World";
但这不是我拥有的字符串,我没有手动输入它生成的字符串。所以我完全理解我需要双重转义,但我不能手动创建一个。我需要知道如何以编程方式将"Hello\ World" 转换为"Hello\\ World"。
是否有一些神奇的功能可以避开所有反斜杠?是否有我不知道的doubleEscape() 函数,或者可能有一些正则表达式替换函数可以帮助我。
我不想要“使用双重转义”或“您的字符串必须是 'Hello\ World'”的答案。我完全知道这是我需要做的,但我需要以编程方式转义转义字符,它不能手动完成。
我尝试过这样的事情:
var a = "Hello\ World";
a = a.replace("\", "\\");
但这当然不起作用,因为在替换过程中会忽略转义字符。我试过这样的事情:
var a = "Hello\ World";
a = a.replace("\\", "\\\\");
但这给出了一个错误。我相信它将搜索参数解释为正则表达式,这是一个无效的正则表达式,这会导致错误。
另一篇类似的帖子建议这样做:
var a = "Hello\ World";
a = a.replace(/\\/g, '\\\\');
a; // outputs "Hello World";
这不起作用。字符串保持不变,就好像没有执行替换一样。
有什么建议吗?
【问题讨论】:
-
'\ '等价于' ',这意味着以编程方式你所拥有的完全等价于'Hello World',并且绝对无法知道 `` 字符在字符串中的位置 (除非您解析该特定字符串的源代码)。 -
是的,我看到了 4 次这样的答案,但我离真正的答案还差得远。
-
我投票结束这个问题,因为它是基于一个谬误和根本的误解
-
@DustinPoissant 没有真正的答案。您的问题完全无法回答。
标签: javascript regex string