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

Javascript 如果前面的最后一个字是数字,则删除字符串的最后一个字,并增加数字-JS,javascript,regex,Javascript,Regex,我有一个字符串,如果前一个单词是数字,我需要删除字符串的最后一个单词,然后增加数字。如果前面的最后一个单词不是数字,我们将继续检查,直到出现相同的单词,并将计数与单词一起抛出。这是一个扩展-后一部分正在工作。无法使第一个示例正常工作。请给我一些建议 例如: 模型传输2传输-模型传输3//预期输出 模型传输-模型传输3//预期输出 模型传输-模型传输4//预期输出 模型传输-模型传输//预期输出 模型-模型//预期输出 var name=“模型转移2转移”; const name1='模型传输模

我有一个字符串,如果前一个单词是数字,我需要删除字符串的最后一个单词,然后增加数字。如果前面的最后一个单词不是数字,我们将继续检查,直到出现相同的单词,并将计数与单词一起抛出。这是一个扩展-后一部分正在工作。无法使第一个示例正常工作。请给我一些建议

例如:

  • 模型传输2传输-模型传输3//预期输出
  • 模型传输-模型传输3//预期输出
  • 模型传输-模型传输4//预期输出
  • 模型传输-模型传输//预期输出
  • 模型-模型//预期输出
  • var name=“模型转移2转移”;
    const name1='模型传输模型传输';
    const name2='模型传输';
    const name3='模型传输';
    const name4=‘模型传输’;
    常量renameNameOccurrence=(
    名称
    发生名称
    ) => {
    var regExp=新的regExp(`(?1){
    for(设i=0;i1){
    modifiedName=名称
    .replace(新的RegExp(`s*${occurrenceName}\\s*`,“gi”),“”)
    .concat(`${occurrenceName.toLowerCase()}${occurrenceCount}`);
    }否则{
    modifiedName=名称;
    }
    }否则{
    modifiedName=名称;
    }
    }
    }否则{
    modifiedName=名称;
    }
    返回modifiedName;
    };
    console.log('name',renameNameOccurrence(name,'transfer'));//模型传输3
    console.log('name1',renameNameOccurrence(name1,'transfer');//模型传输模型传输
    log('name2',renameNameOccurrence(name2,'transfer'));//模型传输3
    log('name3',renameNameOccurrence(name3,'transfer'));//模型传输3
    
    console.log('name4',renameNameOccurrence(name4',transfer');//Model transfer 3
    此解决方案依赖于按字分割和迭代方法来计算
    transfer
    的实例。它还检测最后一个字之前是否有整数,如果是,则按照下面代码中所述处理该情况:

    var name=“模型转移2转移”;
    const name1='模型传输模型传输';
    const name2='模型传输';
    const name3='模型传输';
    const name4=‘模型传输’;
    常量renameNameOccurrence=(名称,发生名称)=>{
    //按小写字母拆分
    设s=name.toLowerCase().split(“”)
    //现在数一数“转移”字
    设t=0;
    对于(变量i=0;i1){//不包括假定的第一个单词模型
    if(parseInt(s[w]).toString()==s[w]){
    t++;//递增传输字,因为计数是一致的
    log(“你好”)
    }
    }
    //现在重新组合字符串
    如果(t>1){
    返回名称。拆分(“”[0]+“转移”+t
    }
    else如果(t>0){
    返回名称。拆分(“”[0]+“传输”
    }
    否则{
    返回名称。拆分(“”[0]
    }
    }
    /*
    模型传输2传输-模型传输3//预期输出
    模型传输-模型传输3//预期输出
    模型传输-模型传输4//预期输出
    模型传输-模型传输//预期输出
    模型-模型//预期输出
    */
    console.log(重命名nameNameOccurrence(“模型传输2传输”))
    log(重命名为“模型传输”))
    日志(重命名为“模型传输”))
    console.log(重命名nameNameOccurrence(“模型传输”))
    
    console.log(renameNameOccurrence(“Model”)
    这是您上一个问题的新版本吗?:)您能在您的示例中包含所需输入和所需输出的示例吗question@epascarello是的,一个enhancement@GetSet添加了有助于更清楚地看到事物的输入和输出符号。如果您对此感兴趣,可以使用一种更迭代的方法来解决这个问题,而不使用正则表达式?我们可以在函数中硬编码Model关键字吗。这个函数对于任何字符串都应该是可重用的。你可以随时去掉它。它不必返回“Model”。至于可重复使用的任何字符串,我不知道你的意思。我只是举了你的例子,对不起。它可以是名称转移2转移,甚至是什么转移。谢谢。成功了。我错过了一个场景。如果字符串后面没有“transfer”和“transfer”,我们应该返回原始字符串。例如:“模型传输模型传输”应该返回“模型传输模型传输”是的,这稍微改变了算法