javascript - 如何遍历字符串并替换除最后一个句点以外的所有句点?

标签 javascript loops replace each

假设我有这样一个字符串:

var test = my.long.file.name.zip

我正在使用 javascript 获取此字符串中的句点总数,如下所示:

var dots = (test.match(/\./g) || []).length;

然后,如果字符串中有多个句点,我想用下划线替换字符串中的所有句点。

   if(dots>"1"){   
     var newname = test.replace(/\./g, "_");
     console.log(newname);
    }

问题是这会替换所有的句点。我想保持最后一个完好无损。所以我希望 newname 变量按原样读取:

my_long_file_name.zip

我的猜测是我应该使用 $.each() 以某种方式遍历除最后一个以外的所有内容以更改名称。我应该怎么做?

最佳答案

您不一定需要循环,您可以使用更复杂的正则表达式来实现,它使用 positive lookahead

正则表达式 /\.(?=.*\.)/g 查找句点,但仅在更远的地方有后续句点的地方,这意味着最后一个句点不匹配。

window.onload = function(){
  var input = "my.long.file.name.zip"
  var result = input.replace(/\.(?=.*\.)/g,'_')

  alert(result);
}

关于javascript - 如何遍历字符串并替换除最后一个句点以外的所有句点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28504463/

相关文章:

javascript - 当我使用 grunt-env 设置 gruntfile.js 时,为什么无法访问 server.js 文件中的值 NODE_ENV

javascript - JS 处理用 Angular 捕获所有页面中的所有错误

php - 在 PHP 中循环遍历这个数组的最佳方法是什么?

string - 将数字转换为字母

php - 将英文引号替换为德文引号

java - 使用 java 替换文件中包含的文件名并用新名称重命名文件

javascript - 按类别悬停表格中的列

javascript - 如何让 Flipclock 从特定日期自动设置时间

c# - "foreach"和扩展方法: ForEach的区别

Python:键盘输入和循环