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.