2010-10-12 47 views
2

我有以下的文件路径如何与替换 \使用JavaScript字符串函数

var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png" 

我怎么能替换\与\所以,使其打印

var imagepath="C:\\Documents and Settings\\Mahesh\\Desktop\\images\\advts.png" 
+0

你如何生成线?解决方案应该在服务器端,在JavaScript之前。 – Kobi 2010-10-12 10:36:27

回答

3

您需要使用replace()方法而逸出在每次出现时的\字符:

imagepath = imagepath.replace(/\\/g, "\\\\"); 
//-> "C:\\Documents and Settings\\Mahesh\\Desktop\\images\\advts.png" 

如果imagepath使用单个反斜杠字符定义,那么这些字符将与它们后面的字符一起评估为转义序列。此时,在从结果字符串中删除反斜杠时替换反斜杠为时已晚。

+0

感谢您的回复,为什么您在这里使用4 \\\\ – mahesh 2010-10-12 10:37:08

+1

@mahesh:在JS字符串和正则表达式文字语法中,\是一个转义字符。因此,它需要自行逃脱。在字符串或正则表达式中需要的每个文字\需要另一个\在它之前。 – 2010-10-12 10:40:22

+0

此处提到的代码不会插入\\,而是将其替换为空,如C:Documents and SettingsMaheshDesktopimagesadvts.png – mahesh 2010-10-12 11:09:42

2

它是一个字符串文字。当它被分配到imagepath时,转义序列已经被分析和处理,并且反斜杠不再存在于字符串中。你只需要首先将它们放在字符串中。

为了证明我的意思:

>>> var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png" 
>>> imagepath 
"C:Documents and SettingsMaheshDesktopimagesadvts.png" 

有没有办法解决这个问题,在这一阶段。

1

您可以使用字符串replace()方法。 Replace on W3Schools.com

实施例:

var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png" 
document.write(imagepath.replace("\\", "\\\\")); 

Upate正如reko_t说,一旦路径被分配给imagepath,这是一个处理的文字。 \个字符消失。我刚刚用这个例子测试了我的代码,不幸的是无法修复它。

<html> 
    <head> 
     <script type="text/javascript"> 
      function init() { 
       var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png" 
       alert(imagepath.replace(/\\/g, "\\\\")); 
      } 
     </script> 
    </head> 
    <body onload="init()"> 

    </body> 
</html> 

做到这一点的唯一方法是更换\\\在服务器端,它之前被渲染成JavaScript需要由JavaScript用来分配给imagepath

+0

这不起作用,请参阅我的答案以解释原因。 – 2010-10-12 10:34:44

+0

我看到了......谢谢.... – 2010-10-12 10:36:08

+0

如果确实起作用,它只会取代第一个反斜杠。对于全局替换,您需要使用正则表达式。 – 2010-10-12 10:38:37

0

变种的ImagePath初始化

var imagepath=imagepath.replace("\", "\\"); 

回报的ImagePath后只需添加;

-2

试试这个:

str.replace(new RegExp('/', 'g'),'-') 
+1

他们想用'\\'替换'\',而不是'/' -'。 – JJJ 2017-03-23 08:36:49