如何在JavaScript中使用正则表达式或字符串函数在\之后提取子字符串,在字符串中插入反斜杠?

如何在JavaScript中使用正则表达式或字符串函数在\之后提取子字符串,在字符串中插入反斜杠?,javascript,split,substring,slice,backslash,Javascript,Split,Substring,Slice,Backslash,我有以下字符串: school\boy school\class school\playground school\teacher school\subject 我想提取\之后的子字符串,即,男孩,班级,操场,老师,主题。而且,school仍然是所有字符串的常量子字符串 我知道解决方法是添加一个额外的反斜杠,比如学校\\boy,学校\\teacher等。因为它将\b,\t视为一个特殊字符,但是上面的数据来自后端服务,因此为每个字符串手动添加额外反斜杠的解决方案是不可行的 我的问题是如何通过字符

我有以下字符串:

school\boy
school\class
school\playground
school\teacher
school\subject
我想提取\之后的子字符串,即,
男孩
班级
操场
老师
主题
。而且,
school
仍然是所有字符串的常量子字符串

我知道解决方法是添加一个额外的反斜杠,比如
学校\\boy
学校\\teacher
等。因为它将
\b
\t
视为一个特殊字符,但是上面的数据来自
后端
服务,因此为每个字符串手动添加额外反斜杠的解决方案是不可行的

我的问题是如何通过字符串函数或正则表达式插入这个额外的\反斜杠,并在\后提取子字符串

我试着这样做:

var str = "school\boy";
var newstr = str.slice(0,6) + '\\' + str.slice(6); \\ newstr = school\\boy
console.log(newstr.split('\\\\')[1]);

但它给出了
未定义的
。如果我用一个反斜杠进行拆分,它将输出为
\boy
,这是不正确的。我不明白为什么
拆分
不起作用。它仍然将
\b
视为特殊字符,即使在字符串中添加了额外的\after字符
'l'

我假设您的后端正在生成JavaScript代码(只有一个反斜杠)最好的办法是重新配置后端。

您还可以使用
fetch()
执行
GET
请求来获取字符串,而无需转义

但是,如果出于某种原因,您不能这样做,您可以使用
String.raw()

const str=String.raw`school\boy`;//是的,没有括号。

console.log(str.split(“\\”[1])
不幸的是,一旦JS获得字符串,它就会将
\b
转换为一个特殊字符-我认为您需要一个标签函数。(我记不得了)如果你的实际代码像
var str=“school\boy”则代码中没有任何实际的反斜杠,但是如果数据是从网络请求中获取的,例如,如果它有反斜杠,那么它的格式已经正确了?“即使在字符串中添加了额外的\后字符'l',它仍然将\b视为特殊字符。”-只有\存在于源代码中。将\添加到内存中的字符串不会更改以前创建该字符串的源代码,从而停止将\视为转义。如果这是实际代码,则生成该代码的任何代码都会被破坏,应该修复。因为这是来自数据库,所以听起来像是动态生成的,对吗?代码是动态生成的吗?如果是这样,则代码生成器已损坏,应予以修复。(虽然,在理想情况下,您无论如何都不会像那样编写动态JS,最好使用JSON之类的东西)这很有魅力。但是,是的,长期的解决方案是修复代码生成的方式。谢谢