I have a string and I need to remove the last word of a string if the last before word is a number and increment the number. If the last before word is not a number, we keep checking until the same word has occurred and throw the count along with the word. This is an extension of Count string occurrence and replace with string and count - JS - The latter part is working. Unable to get the first example working. Please advice.
Example:
- 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
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;
};
console.log('name', renameNameOccurrence(name, 'transfer')); //Model Transfer 3
console.log('name1', renameNameOccurrence(name1, 'transfer')); //Model transfer model transfer
console.log('name2', renameNameOccurrence(name2, 'transfer')); //Model transfer 3
console.log('name3', renameNameOccurrence(name3, 'transfer')); //Model transfer 3
console.log('name4', renameNameOccurrence(name4, 'transfer')); //Model transfer 3