我有一个应用程序,它可以解析字符串,并通过jQuery将它们传递到弹出窗口。我传递的一些字符串包含一个表示网址或内部C:驱动器位置的字段。当我将字符串传递给窗口时,窗口路径中的反斜杠("\")被去掉了(使用正斜杠的网址当然没有问题。我尝试将这些字符串作为链接传递,这样用户只需单击链接即可离开。显然,如果去掉反斜杠,链接将不起作用。我该怎么测试它呢?我已经尝试了几个简单的正则表达式,但都不起作用。
编辑:我解析的字符串来自Sharepoint应用程序列表,我无法控制它们的格式,它们只是以"\drive\then\ The \path\to\ the \file“的形式输入到列表中。我的理解是,我需要检查是否有反斜杠,然后通过添加另一个反斜杠对其进行转义。但是怎么做呢?
编辑2:很高兴知道我是在正确的轨道上。从我在互联网上读到的东西,我已经猜到这是沿着这条线的东西。然而,我仍然不能让它工作。也许你们能帮我一把。
我从sharepoint列表中抓取了字段,如下所示(sharepoint存储的字段名称带有前缀'ows_':
var devPath = "<a class='h_link' href='"+$(this).attr('ows_DEVPathURLServer')+"'>"+$(this).attr('ows_DEVPathURLServer')+"</a>";
如上所述,这对web URL非常有效。
所以我做了一个.replace(/\/g,'\');,但是它不能运行。所以我想我应该试试:
var unregged = $(this).attr('ows_DEVPathURLServer');
var regged = unregged.toString().split('\\').join('\\\\');
alert(regged);
var devPath = "<a class='h_link' href='"+regged+"'>"+regged+"</a>";
只是为了打破我的思维过程。不起作用。我遗漏了什么?
谢谢!
发布于 2012-03-29 21:36:03
您可以简单地检查这是否是“本地”位置,并在进一步传递它之前将其转换为File URI scheme。
下面这样的代码可能会起到作用:
var localPathRegex = /^\\(\w)\\/i;
if (localPathRegex.test(url)){
url = url.replace(localPathRegex, 'file:///$1:/').replace(/\\/g, '/');
}
这应该会将\d\then\the\path\to\the\file
转换为file:///d:/then/the/path/to/the/file
发布于 2012-03-29 21:36:35
下面是一个更快、更少正则表达式的单行解决方案:
myString.split('\\').join('\\\\');//replaces all backslashes with double backslashes.
在这里使用regexp太过分了……
发布于 2012-03-29 21:17:08
你需要用另一个反斜线来转义你的反斜线。您传递的url将如下所示:
c:\mydrive\MyFolder
https://stackoverflow.com/questions/9926077
复制相似问题