猿问

如果最后一个单词是数字并增加数字 - JS,则删除字符串的最后一个单词

我有一个字符串,如果最后一个单词是数字并增加数字,我需要删除字符串的最后一个单词。如果最后一个单词不是数字,我们会一直检查直到出现相同的单词,然后将计数与单词一起抛出。这是Count string occurrence 和 replace with string and count的扩展- JS - 后半部分正在运行。无法使第一个示例正常工作。请指教。

例子:

  1. Model transfer 2 transfer - Model transfer 3 //预期输出

  2. 模型迁移 transfer Transfer - 模型迁移 3 //预期输出

  3. Model transfertransfer Transfer Transfer - Model transfer 4 //预期输出

  4. Model transfer - Model transfer //预期输出

  5. 模型 - 模型 //预期输出

var name = "Model Transfer 2 transfer";

const name1 = 'Model transfer model transfer';

const name2 = 'Model transfer transfer transfer';

const name3 = 'Model Transfer transfer Transfer';

const name4 = 'Model transfer transfer transfer';

const renameNameOccurrence = (

  name,

  occurrenceName

) => {

  var regExp = new RegExp(`(?<=${occurrenceName}\\s)(.+?)(?=\\s+${occurrenceName})`, "ig");

  var results = Number(name.match(regExp)[0]);

  if (typeof results == 'number') {

    const abc = name.replace(/\w+[.!?]?$/, '');

  }

  const nameSplit = name.split(" ");

  const occurrenceCount = (

    name.match(new RegExp(`${occurrenceName}`, "gi")) || []

  ).length;

  let modifiedName = "";

  if (occurrenceCount > 1) {

    for (let i = 0; i < nameSplit.length - 1; i++) {

      if (nameSplit[i].toLowerCase() === nameSplit[i + 1].toLowerCase()) {

        if (occurrenceCount > 1) {

          modifiedName = name

            .replace(new RegExp(`\\s*${occurrenceName}\\s*`, "gi"), "")

            .concat(` ${occurrenceName.toLowerCase()} ${occurrenceCount}`);

        } else {

          modifiedName = name;

        }

      } else {

        modifiedName = name;

      }

    }

  } else {

    modifiedName = name;

  }


  return modifiedName;

};

牛魔王的故事
浏览 136回答 1
1回答

幕布斯6054654

该解决方案依赖于按单词拆分和计算transfer. 它还会检测最后一个单词之前是否有整数,如果是,则按以下代码所述处理这种情况:var name = "Model Transfer 2 transfer";const name1 = 'Model transfer model transfer';const name2 = 'Model transfer transfer transfer';const name3 = 'Model Transfer transfer Transfer';const name4 = 'Model transfer transfer transfer';const renameNameOccurrence = (name, occurrenceName) => {&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; // split by words as lowercased&nbsp; &nbsp; let s = name.toLowerCase().split(" ")&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; // Now count the 'transfer' words&nbsp; &nbsp; let t = 0;&nbsp; &nbsp; for (var i = 0; i < s.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (s[i] == "transfer") {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t++;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; // Now see if a integer precedes last word&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; w = s.length - 2; // -2 since length is base 1, and we need word before last&nbsp; &nbsp; if (w > 1) {&nbsp; // excluding the assumed 1st word Model&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if ( parseInt( s[w] ).toString() == s[w]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t++; // increment transfer words, since count is consistent&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log("hello")&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; // Now recompose the string&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (t > 1) {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; return name.split(" ")[0] + " Transfer " + t&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; }&nbsp; &nbsp; else if (t > 0) {&nbsp; &nbsp; &nbsp; &nbsp; return name.split(" ")[0] + " Transfer"&nbsp; &nbsp; }&nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; return name.split(" ")[0]&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}/*Model transfer 2 transfer - Model transfer 3 //Expected outputModel transfer transfer Transfer - Model transfer 3 //Expected outputModel transfertransfer Transfer Transfer - Model transfer 4 //Expected outputModel transfer - Model transfer //Expected outputModel - Model //Expected output*/console.log( renameNameOccurrence( "Model transfer 2 transfer" ))console.log( renameNameOccurrence( "Model transfer transfer Transfer" ))console.log( renameNameOccurrence( "Model transfer transfer Transfer Transfer" ))console.log( renameNameOccurrence( "Model transfer" ))console.log( renameNameOccurrence( "Model" ))
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答