2010-10-12 49 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