Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过使用javascript选择性地添加或删除字符来转换字符串_Javascript_String - Fatal编程技术网

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

如何通过使用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++)

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

假设我有一个字符串'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++) {
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.我也不确定^^