首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >传递url时保留原始反斜杠的问题

传递url时保留原始反斜杠的问题
EN

Stack Overflow用户
提问于 2012-03-29 21:13:25
回答 4查看 6.1K关注 0票数 3

我有一个应用程序,它可以解析字符串,并通过jQuery将它们传递到弹出窗口。我传递的一些字符串包含一个表示网址或内部C:驱动器位置的字段。当我将字符串传递给窗口时,窗口路径中的反斜杠("\")被去掉了(使用正斜杠的网址当然没有问题。我尝试将这些字符串作为链接传递,这样用户只需单击链接即可离开。显然,如果去掉反斜杠,链接将不起作用。我该怎么测试它呢?我已经尝试了几个简单的正则表达式,但都不起作用。

编辑:我解析的字符串来自Sharepoint应用程序列表,我无法控制它们的格式,它们只是以"\drive\then\ The \path\to\ the \file“的形式输入到列表中。我的理解是,我需要检查是否有反斜杠,然后通过添加另一个反斜杠对其进行转义。但是怎么做呢?

编辑2:很高兴知道我是在正确的轨道上。从我在互联网上读到的东西,我已经猜到这是沿着这条线的东西。然而,我仍然不能让它工作。也许你们能帮我一把。

我从sharepoint列表中抓取了字段,如下所示(sharepoint存储的字段名称带有前缀'ows_':

代码语言:javascript
运行
复制
var devPath = "<a class='h_link' href='"+$(this).attr('ows_DEVPathURLServer')+"'>"+$(this).attr('ows_DEVPathURLServer')+"</a>";

如上所述,这对web URL非常有效。

所以我做了一个.replace(/\/g,'\');,但是它不能运行。所以我想我应该试试:

代码语言:javascript
运行
复制
      var unregged = $(this).attr('ows_DEVPathURLServer');
      var regged = unregged.toString().split('\\').join('\\\\');
      alert(regged);
      var devPath = "<a class='h_link' href='"+regged+"'>"+regged+"</a>";

只是为了打破我的思维过程。不起作用。我遗漏了什么?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-29 21:36:03

您可以简单地检查这是否是“本地”位置,并在进一步传递它之前将其转换为File URI scheme

下面这样的代码可能会起到作用:

代码语言:javascript
运行
复制
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

票数 2
EN

Stack Overflow用户

发布于 2012-03-29 21:36:35

下面是一个更快、更少正则表达式的单行解决方案:

代码语言:javascript
运行
复制
myString.split('\\').join('\\\\');//replaces all backslashes with double backslashes.

在这里使用regexp太过分了……

票数 3
EN

Stack Overflow用户

发布于 2012-03-29 21:17:08

你需要用另一个反斜线来转义你的反斜线。您传递的url将如下所示:

c:\mydrive\MyFolder

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9926077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档