如何通过使用javascript选择性地添加或删除字符来转换字符串
我正在努力解决以下问题: 假设我有一个字符串'foo.bar.baz'。我想把它转换成foo[bar][baz]如何通过使用javascript选择性地添加或删除字符来转换字符串,javascript,string,Javascript,String,我正在努力解决以下问题: 假设我有一个字符串'foo.bar.baz'。我想把它转换成foo[bar][baz] 使用JavaScript有没有一种简洁的方法可以做到这一点?我假设您正在尝试转换文本前带有“.”的字符串 var str = 'foo.bar.baz'; var splittedArray = str.split('.'); var result = splittedArray[0]; for(var i = 1; i < splittedArray.length; i++)
使用JavaScript有没有一种简洁的方法可以做到这一点?我假设您正在尝试转换文本前带有“.”的字符串
var str = 'foo.bar.baz';
var splittedArray = str.split('.');
var result = splittedArray[0];
for(var i = 1; i < splittedArray.length; i++) {
result += '[' + splittedArray[i] + ']';
}
我假设您正在尝试转换文本前有“.”的字符串
var str = 'foo.bar.baz';
var splittedArray = str.split('.');
var result = splittedArray[0];
for(var i = 1; i < splittedArray.length; i++) {
result += '[' + splittedArray[i] + ']';
}
拆分和连接很容易:
拆分和连接很容易:
使用正则表达式:
var str = 'foo.bar.baz';
str = str.replace(/\.([a-z]{3})/g, "[$1]");
使用正则表达式:
var str = 'foo.bar.baz';
str = str.replace(/\.([a-z]{3})/g, "[$1]");
对于边缘情况,您没有提供足够的选项,例如,如果只有一个字符串,例如foo,该怎么办。应该返回foo[]还是foo 无论哪种方式,这都是我回答这个问题的机会:
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.
当然还有其他人提到的正则表达式解决方案!在我看来,它比任何js都更干净、更快。对于边缘情况,您没有提供足够的选项,例如,如果您有一个字符串,即foo,该怎么办。应该返回foo[]还是foo 无论哪种方式,这都是我回答这个问题的机会:
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.
当然还有其他人提到的正则表达式解决方案!更干净,在我看来,这比任何js版本都要快。你能发布到目前为止的尝试和一个演示来重现你遇到的问题吗?使用正则表达式你可以很容易地解决这个问题。你的意思是将它存储在字典中吗?你能发布到目前为止的尝试和一个演示来重现你遇到的问题吗?使用正则表达式你可以很容易地解决这个问题。你的意思是将它存储在字典?我不认为长度3是一个要求。考虑/\[^ .] */gtru.我也不确定^^我不认为长度3是一个要求。考虑/\[^ .] */gtru.我也不确定^^