如何在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之类的东西)这很有魅力。但是,是的,长期的解决方案是修复代码生成的方式。谢谢