当前位置: 首页 > 知识库问答 >
问题:

如何在字符串中使用反斜杠(\)?

盛骏祥
2023-03-14

我尝试了许多方法从已执行的(我不是指从html输入)中获得单个反斜杠。

我可以将特殊字符作为tab、new line和许多其他字符,然后将它们转义为\\t\\n\\(某个其他字符),但当非特殊字符在旁边时,我不能获得单个反斜杠。

我不想要这样的东西:

str = "\apple";   // I want this, to return:
console.log(str); // \apple

如果我尝试在0处获取字符,则得到a而不是\

共有2个答案

萧韬
2023-03-14

\是转义字符,当后面跟一个非特殊字符时,它不会变成字面上的\。相反,您必须加倍\\

console.log("\apple");  //-> "apple" 
console.log("\\apple"); //-> "\apple" 

没有办法获得原始的、原始的字符串定义或创建没有转义字符的文字字符串。

卢权
2023-03-14

(参见答案末尾的ES2015更新。)

您已经将问题标记为stringregex

在JavaScript中,反斜杠在字符串文本和正则表达式中都有特殊的含义。如果您希望在字符串或正则表达式中有一个实际的反斜杠,您必须编写两个:\\

这个字符串以一个反斜杠开头,你在字面上看到的第一个是转义符,告诉我们下一个字符是字面上的:

var str = "\\I have one backslash";

此正则表达式将匹配单个反斜杠(而不是两个);同样,你在字面上看到的第一个是转义符,告诉我们下一个字符是字面上的:

var rex = /\\/;

如果您使用字符串创建正则表达式(而不是像我上面所做的那样使用正则表达式文本),请注意您处理的是两个级别:字符串级别和正则表达式级别。因此,要使用与单个反斜杠匹配的字符串创建正则表达式,您最终需要使用四个:

// Matches *one* backslash
var rex = new RegExp("\\\\");

这是因为,首先,你要写一个字符串文字,但你想要在其中加反斜杠。因此,您可以使用\\对每一个反斜杠执行此操作。但是您的正则表达式还需要为每一个真正的反斜杠提供两个\\,因此它需要在字符串中看到两个反斜杠。因此,总共有四个。这是我尽量避免使用new RegExp(string)的原因之一;我很容易糊涂。:-)

快进到2015年,正如Dolphin_Wood指出的,新的ES2015标准为我们提供了模板文字、标记函数和string.raw函数:

// Yes, this unlikely-looking syntax is actually valid ES2015
let str = String.raw`\apple`;

str最终包含字符\APPLE。请注意“字符串”(模板)中没有${,因为这是一个模板文字,而${开始替换。例如:

let foo = "bar";
let str = String.raw`\apple${foo}`;

...结果为\applebar。更新:ES2018更新了模板文字,允许无效转义序列,以下内容不再正确。 还请注意,这与C#中的“逐字”字符串或类似的字符串不太一样,因为不允许使用与规范中的LegacyOctalEscapeSequence匹配的序列,并且会导致语法错误。例如

// Fails
let str = String.raw`c:\foo\12\bar`;

...失败,因为 \12看起来像旧式八进制文本。

 类似资料:
  • 问题内容: 我需要反斜杠才能成为字符串的一部分。我该怎么做? 问题答案: 当反斜杠不能转义字符串的终止引号或以其他方式创建有效的转义序列(用双引号引起来的字符串)时,这两种方法中的任一个都会产生一个反斜杠: 当转义下一个字符会导致解析错误(字符串的引号终止)或有效的转义序列(双引号的字符串)时,则需要转义反斜杠:

  • 问题内容: 我需要在路径字符串中替换为,但是以下代码失败。 有什么有用的建议吗? 问题答案: 使用函数filepath.ToSlash将操作系统路径分隔符替换为路径中的“ /”。 在Windows上,函数返回。在其他操作系统上,该函数按原样返回path参数。

  • 问题内容: 你被输出误导了-你所采用的第二种方法实际上可以实现你想要的,只是你不相信它. 顺便说一句,还有另一种字符串形式可能会更清晰一些: 问题答案: 你被输出误导了-你所采用的第二种方法实际上可以实现你想要的,只是你不相信它。 顺便说一句,还有另一种字符串形式可能会更清晰一些:

  • 问题内容: 这是我需要分割的字符串。 我尝试了这个 但是没有用。 如何拆分此字符串… 问题答案: 首先,你不能在有问题的地方输入字符串 这应该替换为 因为反斜杠也需要转义。 最后,你需要执行以下操作来拆分它们: 希望这可以帮助。

  • 所以,我在Node.js中使用multer,它给出了上传图像的反斜杠路径,但这不起作用,因为我需要将其转换为URL。 这是我得到的输出: 但是,我想用正斜杠替换图像前的反斜杠。 我试过这个: 但是,它只是去掉了反斜杠: 附:我知道这个网站上有这样的问题,但他们没有帮助我。例如,multer:文件的路径是不对的对我没有帮助,所以请不要将此标记为重复问题。多谢了。

  • 我一直在试图弄清楚如何在字符串中删除一个特殊字符及其前面的字母。 让我们假设,有一个带有的字符串。在这种情况下,我们必须从字符串中删除字符。因此,结果将是。 有人能帮我找到有效的方法吗?