JS替换字符串中指定位置的字符(多种方法)
假设有一个字符串,可能'GoodMorning'也可能是'HelloWorld',我想将第五个字符,替换成'-'。
因为字符串虽然可以像数组那样获取某一位置字符'HelloWorld'[4],但是不能像数组那样直接修改某一位置的字符'HelloWorld'[4]='-',这样是行不通的,但是可以把它切分成数组,修改某一位置的值,然后在合并回来。
方法1:
constreplaceStr1=(str,index,char)=>{ conststrAry=str.split(''); strAry[index]=char; returnstrAry.join(''); } replaceStr(str1,4,'-');//=>Good-Morning replaceStr(str2,4,'-');//=>Hell-World
js的字符串有个substring方法,用于提取字符串中介于两个指定下标之间的字符,也就是说可以用'HelloWorld'.substring(0,4),得到Hell,加上要替换的字符,再加上后面的字符串就可以。
方法2:
constreplaceStr2=(str,index,char)=>{ returnstr.substring(0,index)+char+str.substring(index+1); } replaceStr2(str1,4,'-');//=>Good-Morning replaceStr2(str2,4,'-');//=>Hell-World
ps:下面看下js替换字符串中所有指定的字符
第一次发现JavaScript中replace()方法如果直接用str.replace("-","!")只会替换第一个匹配的字符.
而str.replace(/\-/g,"!")则可以全部替换掉匹配的字符(g为全局标志)。
replace()
Thereplace()methodreturnsthestringthatresultswhenyoureplacetextmatchingitsfirstargument
(aregularexpression)withthetextofthesecondargument(astring).
Iftheg(global)flagisnotsetintheregularexpressiondeclaration,thismethodreplacesonlythefirst
occurrenceofthepattern.Forexample,vars="Hello.Regexpsarefun.";s=s.replace(/\./,"!");//replacefirstperiodwithanexclamationpointalert(s);
producesthestring“Hello!Regexpsarefun.”Includingthegflagwillcausetheinterpreterto
performaglobalreplace,findingandreplacingeverymatchingsubstring.Forexample,vars="Hello.Regexpsarefun.";s=s.replace(/\./g,"!");//replaceallperiodswithexclamationpointsalert(s);
yieldsthisresult:“Hello!Regexpsarefun!”
所以可以用以下几种方式.:
string.replace(/reallyDo/g,replaceWith); string.replace(newRegExp(reallyDo,'g'),replaceWith);
string:字符串表达式包含要替代的子字符串。
reallyDo:被搜索的子字符串。
replaceWith:用于替换的子字符串。
Js代码
String.prototype.replaceAll=function(reallyDo,replaceWith,ignoreCase){ if(!RegExp.prototype.isPrototypeOf(reallyDo)){ returnthis.replace(newRegExp(reallyDo,(ignoreCase?"gi":"g")),replaceWith); }else{ returnthis.replace(reallyDo,replaceWith); } }
总结
到此这篇关于JS替换字符串中指定位置的字符的文章就介绍到这了,更多相关js替换字符内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。