2011-06-19 77 views
3

如何在拆分後在url地址內插入字符串? 我有一個簡單的代碼是這樣,但我只是不知道如何分割和結合​​是我曾嘗試「追加」功能的工作 ,但我無法得到它的權利 我測試,它在 http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_splitJavaScript拆分並添加字符串

<html> 
<body> 
    <script type="text/javascript"> 

     var str="/image/picture.jpg"; 
     var test = str.split("/"); 
     for(var i = 0; i < test.length; i++) { 
      document.write(test[1].join('/original') + "<br />");  
     } 
     document.write(test); 

    </script> 
</body> 

我想要的輸出僅僅是這樣的:

「/image/original/picture.jpg」

提示:感謝您的幫助。

+1

Vikenoshi,請記得要接受這有助於你的答案:)。謝謝,歡迎來到stackoverflow! – Polaris878

回答

6

只需使用,而不是替代:

str.replace('image/', 'image/original/'); 

如果你真的想將其轉換成一個陣列因爲某些原因:

var ary = str.split('/'); 
ary.splice(2, 0, 'original'); 
ary.join('/'); 
+3

拼接不是Firefox中的字符串函數。在Chrome和IE9中都不起作用... – 2011-06-19 04:10:27

+0

哇!這麼容易,謝謝你的幫助。 – vikenoshi

+0

@Keoki Zee - 謝謝,打算在那裏輸入「split」,而不是「拼接」 –

1

vikenoshi, 你想使用Array.splice方法插入新元素放入您使用String.split創建的陣列中。該splice方法記錄在這裏:

http://www.w3schools.com/jsref/jsref_splice.asp

這是應該做的代碼,你想要什麼:

function spliceTest() { 

    var url = "/image/picture.jpg"; 

    // split out all elements of the path. 
    var splitResult = url.split("/"); 

    // Add "original" at index 2. 
    splitResult.splice(2, 0, "original"); 

    // Create the final URL by joining all of the elements of the array 
    // into a string. 
    var finalUrl = splitResult.join("/"); 

    alert(finalUrl); // alerts "/image/original/picture.jpg" 
}; 

我創建了一個的jsfiddle從一個工作示例: http://jsfiddle.net/S2Axt/3/

一關於我正在使用的其他方法的說明:

  • join:Join從數組中創建一個新字符串。該字符串通過將數組中的所有元素轉換爲字符串並將它們附加或連接在一起來構造。您可以選擇提供分隔符。這裏我使用/來分割路徑的各個部分。
  • split:Split將基於另一個字符串的字符串拆分爲數組。
+0

謝謝,這對我來說是一個很大的幫助,我一直在掙扎2天。 – vikenoshi

0

你也這樣做:

var wholeURL = "/image/picture.jpg"; 
var choppedUpURL = wholeURL.split("/"); 
var finalURL = "/" + choppedUpURL[1] + "/original/" + choppedUpURL[2]; 
alert(finalURL); 

http://jsfiddle.net/jasongennaro/KLZUT/

0

它的快速和簡單

var str="/image/picture.jpg"; 
var elems = str.split("/"); 
elems.splice(elems.length-1, 0, "original") 
document.write(elems.join("/"); 

注意我用的拼接方法與長度的第一個參數的數組 - 1.這將字符串「original」放在最後一個路徑中的倒數第二個位置,不管你的URL有多長通過。如果這不是所需的行爲,則可以將代碼更改爲elems.splice(2, 0, "original")。這會將字符串「原始」放在路徑中的第二個位置,無論URL長度如何。

+0

謝謝你,我得到更多的知識。 – vikenoshi

0

您的代碼存在部分問題,因此您在字符串上調用join,而不是數組,請參閱https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/join

split的返回類型是一個數組,https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split。這樣做

var test = str.split("/"); 

表示測試是一個數組。那麼test[1]是該數組的一個字符串,並且在其上調用join將不起作用。

+0

感謝您的信息,現在我明白了爲什麼加入不起作用。 – vikenoshi

0

嘗試:

var str="/image/picture.jpg"; 
var test = str.split("/"); 
test[3]=test[2]; 
test[2]='original'; 
document.write(test.join('/'));