假设我有这样一个字符串:
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/