亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果最后一個單詞是數字并增加數字 - JS,則刪除字符串的最后一個單詞

如果最后一個單詞是數字并增加數字 - JS,則刪除字符串的最后一個單詞

牛魔王的故事 2023-03-03 09:34:01
我有一個字符串,如果最后一個單詞是數字并增加數字,我需要刪除字符串的最后一個單詞。如果最后一個單詞不是數字,我們會一直檢查直到出現相同的單詞,然后將計數與單詞一起拋出。這是Count string occurrence 和 replace with string and count的擴展- JS - 后半部分正在運行。無法使第一個示例正常工作。請指教。例子:Model transfer 2 transfer - Model transfer 3 //預期輸出模型遷移 transfer Transfer - 模型遷移 3 //預期輸出Model transfertransfer Transfer Transfer - Model transfer 4 //預期輸出Model transfer - Model 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) => {  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;};
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

該解決方案依賴于按單詞拆分和計算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) => {

    

    // split by words as lowercased

    let s = name.toLowerCase().split(" ")  

    

    // Now count the 'transfer' words

    let t = 0;

    for (var i = 0; i < s.length; i++) {

        

        if (s[i] == "transfer") {

            t++;

        }

    }

    

    // Now see if a integer precedes last word

    

    w = s.length - 2; // -2 since length is base 1, and we need word before last

    if (w > 1) {  // excluding the assumed 1st word Model

    

        if ( parseInt( s[w] ).toString() == s[w]) {

            t++; // increment transfer words, since count is consistent

            console.log("hello")

        }

    }

    

    // Now recompose the string

    

    

    

    if (t > 1) {

        

        return name.split(" ")[0] + " Transfer " + t

    

    }

    else if (t > 0) {

        return name.split(" ")[0] + " Transfer"

    }

    else {

        return name.split(" ")[0]

    }

    

    

}


/*


Model transfer 2 transfer - Model transfer 3 //Expected output

Model transfer transfer Transfer - Model transfer 3 //Expected output

Model transfertransfer Transfer Transfer - Model transfer 4 //Expected output

Model transfer - Model transfer //Expected output

Model - 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" ))


查看完整回答
反對 回復 2023-03-03
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號