我正在努力解决以下问题:
假设我有一个字符串 'foo.bar.baz'
。我想将其转换为foo[bar][baz]
使用JavaScript有一种巧妙的方法吗?
答案 0 :(得分:3)
split
和join
:
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]");