为什么string.raw可以处理双反斜杠但是常规转义不能?(代码片段)

author author     2023-05-13     635

关键词:

匹配字符串中的双反斜杠需要两个转义反斜杠。但是在本机JavaScript函数中不匹配的事件如下所示:

const str = 'sj\sfsd'

str.match(/\\/g);                  /*null*/
str.indexOf('\\');                 /*-1*/
str.replace(/\\/, '')              /*'sjsfsd'*/   /*<--wrong characters replaced*/

String.raw工作:

const str = String.raw`sj\sfsd`

str.match(/\\/g);                  /*['\']*/
str.indexOf('\\');                 /*2*/
str.replace(String.raw`\`, '')      /*'sjsfsd'*/

关于这个话题也有类似的问题,但没有人解释这个怪癖背后的原因:

答案

这正是String.raw的用途:它不解释转义序列。反斜杠在字符串中具有特殊含义,因此您需要将其加倍才能得到一个实际的反斜杠。使用String.raw,(大多数)特殊字符失去了它们的特殊含义,因此两个反斜杠实际上是两个反斜杠。它恰好用于需要带有许多特殊字符的字符串时,并且不想担心过多地转义它们。

为啥单反斜杠变成双反斜杠

...双反斜杠【英文标题】:Whysinglebackslashturnstodoublebackslash为什么单反斜杠变成双反斜杠【发布时间】:2013-10-1610:04:39【问题描述】:字符串"\\domain\\path1\\path2"在使用AFNetwork得到JSON响应后变成"\\\\domain\\\\path1\\\\path2"... 查看详情

路径名中的斜杠反斜杠双反斜杠

...故路径名一般用‘‘。实际上在写程序时‘‘和‘/‘都可以使用。在编程中如果使用‘‘,要注意如果路径中刚好有转义字符那么就会引起问题,所以路径中的‘‘必须用‘‘形式。在Windows中路径用‘‘分隔,但是当路径在程序... 查看详情

双反斜杠不起作用?

...rk?【发布时间】:2010-10-1806:24:38【问题描述】:有人知道为什么某些WindowsXP安装不会评估带有双反斜杠的路径吗?在某些XP上发现错误(相同的版本、补丁、未知的更多详细信息)。在大多数情况下一切正常,在某些PC上以下不... 查看详情

为啥某些带有双反斜杠的路径抛出找不到路径异常的一部分?

...:WhysomepathswithdoublebackslashthrowCouldnotfindapartofthepathexception?为什么某些带有双反斜杠的路径抛出找不到路径异常的一部分?【发布时间】:2020-05-2718:19:06【问题描述】:例如,这个路径和文件没有例外:“E:\\SamsungGalaxyS9\\DannyBackup\... 查看详情

用单反斜杠替换双反斜杠

】用单反斜杠替换双反斜杠【英文标题】:Replacingdoublebackslasheswithsinglebackslash【发布时间】:2012-06-1606:08:18【问题描述】:我有一个字符串“\\\\u003c”,它属于UTF-8字符集。由于存在双反斜杠,我无法将其解码为un​​icode。我如... 查看详情

目标 C:用单反斜杠替换双反斜杠

】目标C:用单反斜杠替换双反斜杠【英文标题】:ObjectiveC:Replacedoublebackslashwithasinglebackslash【发布时间】:2016-10-2509:08:17【问题描述】:我正在尝试将包含双反斜杠的字符串替换为只有一个反斜杠的字符串,例如:\\\\This\\\\Is\\\\... 查看详情

es6中字符串的新增方法梳理(代码片段)

1.String.fromCodePoint();String,fromCodePoint()方法可以认为是对String.fromCharCode()方法的扩展,这两个方法的共同点在于都是用于Unicode码点返回对应字符,但是差异在于String.fromCharCode()该方法不能识别大于0xFFFF的码点,ES6中提供了String.fromC... 查看详情

将反斜杠更改为双反斜杠(代码片段)

嗨,我的目录和子目录中有文件,我想使用这种格式"file:///c:\test\subdir\lastdir\file.jpg","lastdir"我无法将替换为\到目前为止我所做的是:SETLOCALENABLEDELAYEDEXPANSION@echooffechofor/f"delims="%%Fin('dir/s/b/a-d')do(for%%Iin("%%~dpF.")do(seta="%%F"echo!a!-------... 查看详情

如何将带有双反斜杠的字符串转换为单反斜杠

】如何将带有双反斜杠的字符串转换为单反斜杠【英文标题】:Howtoconvertstringwithdoublebackslashestosinglebackslahses【发布时间】:2019-12-1823:26:34【问题描述】:如何转换以下字符串:std::strings="\\\\xfc\\\\xe8\\\\x82"到等效的char数组:chars[]... 查看详情

从 c# json 响应中删除双反斜杠

】从c#json响应中删除双反斜杠【英文标题】:Removedoublebackslashfromc#jsonreponse【发布时间】:2020-05-1109:25:18【问题描述】:我需要生成如下所示的字符串"\\xdata,BARCODE,004\\x"但我无法在代码中给出相似的值,因为\'\\\'是转义序列,所... 查看详情

网络资源路径的双斜杠//和双反斜杠的区别

 1斜杠“/”是URL地址中用到的分隔符;对应地,双斜杠用在网络域名访问中,是协议和主机名或IP地址之间的分隔符,以双斜杠//开头的URL是依赖协议的URL表示形式,URL格式:协议://域名或ip/请求文件路径/文件名。如百度的... 查看详情

如何摆脱python windows文件路径字符串中的双反斜杠? [复制]

】如何摆脱pythonwindows文件路径字符串中的双反斜杠?[复制]【英文标题】:Howtogetridofdoublebackslashinpythonwindowsfilepathstring?[duplicate]【发布时间】:2012-08-0902:46:48【问题描述】:我有一本字典:my_dictionary="058498":"table","064165":"pen","0551... 查看详情

Azure DevOps YAML 管道从传递的变量中删除引号和双反斜杠

...一个管道,它期望Ansible-Playbook作为队列时间的传递变量(string)。将我的经典管道转换为YAML后,我发现Playbook 查看详情

Python 3.6,utf-8 到 unicode 的转换,带双反斜杠的字符串

】Python3.6,utf-8到unicode的转换,带双反斜杠的字符串【英文标题】:Python3.6,utf-8tounicodeconversion,stringwithdoublebackslashes【发布时间】:2018-09-2005:12:50【问题描述】:关于utf-8>unicode转换有很多问题,但我的问题仍然没有找到答案。... 查看详情

我可以/我应该使用 std::exception 进行常规错误处理吗?

...本不会抛出异常,但我在想——即使是常规的错误处理,为什么要自己 查看详情

es6中的string.raw

String.raw是处理模板字符串的一个基本方法。举个例子吧:String.raw({raw:‘test‘},1,2,3,4);//t1e2s3t等同于String.raw({raw:[‘t‘,‘e‘,‘s‘,‘t‘]},1,2,3,4)执行原理如下:String.raw=function(strings,...values){varoutput="";for(varindex=0;index& 查看详情

求教springmvcurl中的斜杠怎么处理

...!尤其是加上那些rest之后!如果想快速的定位到controller可以约定一些url的写法!使这个url带有类名,包或者业务的含义!区分了业务和包会好找点!2.0你观察还听仔细的!初始化spring的时候就会做那些事情!全部的url都解析一... 查看详情

我需要在配置文件中转义反斜杠吗?

...\temp\\info.txt"/>如果我使用单反斜杠或双反斜杠,它似乎可以工作。也就是 查看详情