如何通过使用javascript有选择地添加或删除字符来转换字符串

时间:2016-07-01 10:46:35

标签: javascript string

我正在努力解决以下问题:

假设我有一个字符串 'foo.bar.baz'。我想将其转换为foo[bar][baz]

使用JavaScript有一种巧妙的方法吗?

4 个答案:

答案 0 :(得分:3)

splitjoin

很容易
var arr = 'foo.bar.baz'.split('.');
arr.shift() + '[' + arr.join('][') + ']'; // "foo[bar][baz]"

答案 1 :(得分:1)

你没有给出关于边缘情况的足够选项(例如,如果你有一个字符串,即foo该怎么办。那应该返回foo[]还是foo?)。< / p>

无论哪种方式都是我对这个问题的看法:

function greatFunc(txt) {
    var ls = txt.split('.');
    if (ls.length === 1) {  // edge case here!
        return txt;
    }
    return ls[0] + '[' + ls.splice(1).join('][') + ']';
}

greatFunc('foo.bar.baz') // foo[bar][baz]
greatFunc('foo.bar.baz.kop.pop') // foo[bar][baz][kop][pop]
greatFunc('foo') // foo or foo[] if you delete the if clause.

当然有其他人提到的正则表达式解决方案!在我看来,更清洁,比任何一个更快。

答案 2 :(得分:0)

我假设您正在尝试转换具有'。'的字符串。在文本之前。

var str = 'foo.bar.baz';
var splittedArray = str.split('.');
var result = splittedArray[0];
for(var i = 1; i < splittedArray.length; i++) {
result += '[' + splittedArray[i] + ']';
}

答案 3 :(得分:0)

使用正则表达式:

var str = 'foo.bar.baz';
str = str.replace(/\.([a-z]{3})/g, "[$1]");