我有一个像这样的字符串“this/is an example abc/def/fgh/uio to Give you an example”
我想定位最长的单词,并用 "+"
替换该子字符串上的任何 "/"
。
我设法识别出最长的单词,并且我知道如何将所有 "/"
替换为 "+"
但我不知道如何替换“/”
仅出现在最长的单词中。
这是我到目前为止所得到的
//identify longest word in string
function longestWord(str) {
var words = str.split(' ');
return words.reduce(longer);
}
function longer(champ, contender) {
return (contender.length > champ.length) ? contender: champ;
}
//purely given an exemple, some strigns won't be exactly like this
var text2 = "this/ is an example abc/def/fgh/uio to give you an example"
if (longestWord(text2) > 30 ) {
text2.replace(/\//g, ' / ');
}
问题是这也会替换子字符串“this/”上的“/”,而我不希望这样。
如何实现这一目标?
最佳答案
您的 longestWord
函数返回字符串中最长的单词,因此您可以单独传递该字符串(不是正则表达式)作为 的第一个参数。替换
,并替换为(第二个参数)对最长单词调用的/\//g
:
function getLongestWord(str) {
var words = str.split(' ');
return words.reduce(longer);
}
function longer(champ, contender) {
return (contender.length > champ.length) ? contender: champ;
}
var text2 = "this/ is an example abc/def/fgh/uio to give you an example"
const longestWord = getLongestWord(text2);
const output = text2.replace(longestWord, longestWord.replace(/\//g, '+'));
console.log(output);
关于Javascript - 替换字符串子字符串内的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54513318/