用转义的反斜杠替换Javascript中的反斜杠
我们的应用程序需要处理以非转义形式获得的文件路径(即剪掉最后一个元素)c:\blah\di\blah。不幸的是,反斜杠没有被转义,比如c:\\blah\\di\\blah,这意味着javascript不能真正识别反斜杠;调用indexOf(\\)之类的函数将返回-1 我在stackOverflow上见过无数次,但我不知道如何继续 我们无法更改获得的数据,因为它来自另一个框架(extJS) 有没有办法用\\替换单个反斜杠?然后我们可以适当地处理它 我试过:用转义的反斜杠替换Javascript中的反斜杠,javascript,extjs,Javascript,Extjs,我们的应用程序需要处理以非转义形式获得的文件路径(即剪掉最后一个元素)c:\blah\di\blah。不幸的是,反斜杠没有被转义,比如c:\\blah\\di\\blah,这意味着javascript不能真正识别反斜杠;调用indexOf(\\)之类的函数将返回-1 我在stackOverflow上见过无数次,但我不知道如何继续 我们无法更改获得的数据,因为它来自另一个框架(extJS) 有没有办法用\\替换单个反斜杠?然后我们可以适当地处理它 我试过: str.replace(/\/,“\
- str.replace(/\/,“\ \ \”)李>
- str.replace(/\/g,“\\\\”);提到李>
- str.replace(String.fromCharCode(92),String.fromCharCode(92,92));提及
- str.replace(“\\”,“\\\”)李>
- 前面提到了escape()函数。这给了我c%3A%08lahdi%08lah
- 这看起来很有希望:var justTheName=str.split(String.fromCharCode(92)).pop()但也不适合我
var str = 'c:\blah\di\blah'
str = str.replace(/\\/, "\\\\");
alert('' + str)
当您执行
console.log时(str.split(“”).map(函数(ch){return ch.charCodeAt(0);})代码>,您将获得[99、58、8、108、97、104、100、105、8、108…
这意味着\b
和\d
给出相同的值8
,这是您的障碍,不确定如何克服,您是否从文件中读取了所有这些内容,如果是,那么就有希望了…不,不幸的是,这是由extjs框架在Javascript代码中提供的var str='c:\blah\di\blah'
已经是“c:lahdilah”。无法替换不存在的反斜杠。我的观点是:如果您有一个有效的字符串var,其值在记录时显示为“c:\blah\di\blah”如果没有其他错误,您不必担心修复该字符串,因为它已经是一个有效值。您只需在代码中正确拆分它,例如:str.split('\\')。pop()
。这意味着你必须在代码中正确处理转义,而不是使用运行时值。好吧,你不是第一个,也肯定不会是最后一个偶然发现这个主题的人;)如果可能,考虑回答你的问题,以便未来的访问者可以从中获益。