JavaScript分割并添加字符串

3

如何在URL地址的分割后插入字符串? 我有一个简单的代码,但我不理解split和join是如何工作的。 我尝试了“append”函数,但是我无法正确地得到它。 我在http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_split中测试并编写它。

<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个回答

7

只需要使用replace:

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

如果您确实有某些原因需要将其转换为数组:

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

3
在Firefox中,splice不是一个字符串函数。在Chrome和IE9中也无法正常工作... - user456814
@Keoki Zee - 谢谢,我本来想打“split”,而不是“splice”。 - user578895

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根据另一个字符串拆分字符串并生成数组。

谢谢,这对我来说是个大帮助,我已经苦苦挣扎了两天。 - 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("/");

注意,我正在使用splice方法,第一个参数为数组长度-1。这将把字符串“original”放在最终路径的倒数第二个位置,无论您传入多长的URL。如果这不是所需的行为,您可以更改代码以读取elems.splice(2, 0, "original")。这将在路径中的第二个位置放置字符串“original”,无论URL有多长。

0

谢谢提供信息,现在我明白为什么 JOIN 不能在它上面工作了。 - vikenoshi

0

尝试:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接