2011-06-19 78 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('/'));