如何使用Javascript替换不规则字符串前缀?
因此,我有一个字符串数组,它有不规则的、非连续的前缀,例如1。一些文件名;2.一些文件名;11一些文件名;10一些文件名;1.一些文件名;2.一些文件名;2.一些文件名;等等 我如何按顺序重命名这些文件?我有一点心理障碍,因为我不清楚替换将如何影响字符串的可变长度的第一部分,同时保留字符串其余部分的完整性,例如,一旦前缀达到一定长度,它将截断字符串其余部分。我的第二个问题是如何在for循环中一致地识别不断变化的前缀以重命名?我不认为我可以使用固定的子字符串来获取前缀,因为我将获取字符串的一部分或太多。我假设在使用replace方法之前,我需要编写某种函数来计算和规范化前缀。我想在我的情况下,我可以抓取并替换前三个字符,忽略前面的字符。但我想找到一种更通用、更易于维护的方法 这里有一个片段,我想是弄错了如何使用Javascript替换不规则字符串前缀?,javascript,node.js,loops,Javascript,Node.js,Loops,因此,我有一个字符串数组,它有不规则的、非连续的前缀,例如1。一些文件名;2.一些文件名;11一些文件名;10一些文件名;1.一些文件名;2.一些文件名;2.一些文件名;等等 我如何按顺序重命名这些文件?我有一点心理障碍,因为我不清楚替换将如何影响字符串的可变长度的第一部分,同时保留字符串其余部分的完整性,例如,一旦前缀达到一定长度,它将截断字符串其余部分。我的第二个问题是如何在for循环中一致地识别不断变化的前缀以重命名?我不认为我可以使用固定的子字符串来获取前缀,因为我将获取字符串的一部分或
if(suffix === "txt"){
prefix = file.charAt(0);
console.log(prefix);
if(!isNaN(prefix)){
newPre = prefix++;
newFile = file.replace(newPre, prefix);
console.log(newFile);
file1 = path.join(directoryPath, file);
newFile1 = path.join(directoryPath, newFile);
fs.rename(file1, newFile1, function(err){
if(err) throw err;
console.log('it worked, mofo!');
})
}
编辑:
所需结果与重新加前缀的数组顺序相同:
[
1. Some file name
2. Some file name
3. Some file name
etc
]
如果能找到一个可以处理多个字符长的前缀字符串的结果,或者能够确保前缀重命名不会截断字符串的其余部分,那就太好了
谢谢正则表达式可以帮助您解决问题 我假设您要删除的前缀是所有示例文件名开头的数字:
1. Some file name
2. Some file name
11. Some file name
10. Some file name
1. Some file name
2. Some file name
2. Some file name
在英语中,我们将要去掉的前缀描述为:一些数字,后跟一个点,后跟空格
在正则表达式中,这写为:
^ at the beginning of the string
\d+ match some numbers
\. a dot
\s+ and some whitespace
你可以在网上试试,
然后将其纳入您的程序中
newFile = file.replace(/^\d+\.\s+/, prefix);
要了解更多信息:
p.S.正则表达式在所有编程语言中都可用。
它们很难学习,因为它们非常紧凑,但是一旦你
已经了解了可以在许多编程语言中使用它们的基本知识。假设您在数组中有这些文件名。你可以这样做 const arr=[1.Some file name.txt,2.Some file name.txt,11.Some file name.pdf,10.Some file name.txt,1.Some file name.txt,2.Some file name.txt,2.Some file name.txt]; const newArr=arr.mapitem,索引=>{ 常量拆分=项拆分。; splited.0,1;//删除前缀 返回`${index+1}.${splited.join.}`; };
console.lognewArr;请添加想要的结果。谢谢,当我午餐没有喝几杯葡萄酒时,我会测试这个。这听起来肯定会满足我的需要,并处理边缘案例。这看起来也很有用…明天必须尝试。非常感谢。