Javascript - 替换字符串子字符串内的字符

标签 javascript regex

我有一个像这样的字符串“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/

相关文章:

javascript - jquery加载函数在firefox中抛出 "XML Parsing Error: not well-formed"错误

javascript - 如何使图像成为对象,以便我可以构建它一次,然后继续使用它?

c# - 证件编号正则表达式

javascript - JSON.parse 适用于硬编码字符串,但不适用于 var

javascript - setInterval 内的 jquery .delay()

javascript - Node JS在ejs文件中加载js和css文件

Javascript 正则表达式匹配返回末尾带有逗号的字符串

c# - 1 位或 2 位数字的正则表达式,可选的非字母数字,2 个已知字母

javascript - 逗号分隔字符串的正则表达式(2 个字符串以逗号分隔)

仅第二次出现时的正则表达式