Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Regex_Replace - Fatal编程技术网

JavaScript使用公共字符拆分(),然后使用不同字符连接()

JavaScript使用公共字符拆分(),然后使用不同字符连接(),javascript,regex,replace,Javascript,Regex,Replace,假设我有一个字符串:/someFolder/anotherFolder/fileName并且我想用一个“+”替换所有的正斜杠,那么这将起作用: var someString = '/someFolder/anotherFolder/fileName' someString.split('/').join('+'); var someString = '/someFolder/anotherFolder/fileName' someString.replace(/\//g, "+"); 或者使

假设我有一个字符串:
/someFolder/anotherFolder/fileName
并且我想用一个
“+”
替换所有的正斜杠,那么这将起作用:

var someString = '/someFolder/anotherFolder/fileName'
someString.split('/').join('+');
var someString = '/someFolder/anotherFolder/fileName'
someString.replace(/\//g, "+");
或者使用正则表达式,这将起作用:

var someString = '/someFolder/anotherFolder/fileName'
someString.split('/').join('+');
var someString = '/someFolder/anotherFolder/fileName'
someString.replace(/\//g, "+");

但是,如果我想用“+”替换第一个出现的字符,然后用另一个字符替换第二个出现的字符,例如“-”,第三个字符用“*”等等,那么最好的方法是什么,以便上面的字符串
someString
返回:

+someFolder-anotherFolder*fileName

您可以将函数传递给
replace()

let someString=“/someFolder/anotherFolder/file”;
常量repl=['+','-','*'];
设i=0;

log(someString.replace(//\//g,(match)=>repl[(i++)%repl.length])您可以使用索引和字符串获取所需字符作为闭包,或者如果有多个字符,则使用数组

var someString='/someFolder/anotherFolder/fileName'

log(someString.replace(//\//g,(i=>\=>“+-*”[i++])(0))
您可以使用
reduce
方法,方法是将箭头函数作为
参数
传递

var someString='/someFolder/anotherFolder/fileName'
someString=someString.split('/').slice(1).reduce((str,item,index)=>str++“-*”[index]+item,”);
log(someString)您可以使用文本字符串作为搜索参数来链接多个调用,以实现所需的功能:

var someString='/someFolder/anotherFolder/fileName';

log(someString.replace(“/”、“+”).replace(“/”、“-”).replace(“/”、“*”)不太清楚您的意思,但看起来像
someString.replace('/','+').replace('/','-').replace('/','*')
应该足够了。
.replace()
方法可以接收回调函数作为第二个参数。它有一个
offset
参数……要点是没有
g
标志的正则表达式模式只会替换下一个找到的匹配项。@WiktorStribiżew第一个替换方法不会转换正斜杠,从而使第二个替换方法再也找不到任何正斜杠吗?@AndrewL
。replace
以字符串作为第一个参数只替换第一个出现的参数。谢谢Mihai。这种es6方法工作得很好+1我没有想到使用函数来完成此操作。好男人+1.