用转义的反斜杠替换Javascript中的反斜杠

用转义的反斜杠替换Javascript中的反斜杠,javascript,extjs,Javascript,Extjs,我们的应用程序需要处理以非转义形式获得的文件路径(即剪掉最后一个元素)c:\blah\di\blah。不幸的是,反斜杠没有被转义,比如c:\\blah\\di\\blah,这意味着javascript不能真正识别反斜杠;调用indexOf(\\)之类的函数将返回-1 我在stackOverflow上见过无数次,但我不知道如何继续 我们无法更改获得的数据,因为它来自另一个框架(extJS) 有没有办法用\\替换单个反斜杠?然后我们可以适当地处理它 我试过: str.replace(/\/,“\

我们的应用程序需要处理以非转义形式获得的文件路径(即剪掉最后一个元素)c:\blah\di\blah。不幸的是,反斜杠没有被转义,比如c:\\blah\\di\\blah,这意味着javascript不能真正识别反斜杠;调用indexOf(\\)之类的函数将返回-1

我在stackOverflow上见过无数次,但我不知道如何继续

我们无法更改获得的数据,因为它来自另一个框架(extJS)

有没有办法用\\替换单个反斜杠?然后我们可以适当地处理它

我试过:

  • 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()
。这意味着你必须在代码中正确处理转义,而不是使用运行时值。好吧,你不是第一个,也肯定不会是最后一个偶然发现这个主题的人;)如果可能,考虑回答你的问题,以便未来的访问者可以从中获益。