Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript替换不规则字符串前缀?_Javascript_Node.js_Loops - Fatal编程技术网

如何使用Javascript替换不规则字符串前缀?

如何使用Javascript替换不规则字符串前缀?,javascript,node.js,loops,Javascript,Node.js,Loops,因此,我有一个字符串数组,它有不规则的、非连续的前缀,例如1。一些文件名;2.一些文件名;11一些文件名;10一些文件名;1.一些文件名;2.一些文件名;2.一些文件名;等等 我如何按顺序重命名这些文件?我有一点心理障碍,因为我不清楚替换将如何影响字符串的可变长度的第一部分,同时保留字符串其余部分的完整性,例如,一旦前缀达到一定长度,它将截断字符串其余部分。我的第二个问题是如何在for循环中一致地识别不断变化的前缀以重命名?我不认为我可以使用固定的子字符串来获取前缀,因为我将获取字符串的一部分或

因此,我有一个字符串数组,它有不规则的、非连续的前缀,例如1。一些文件名;2.一些文件名;11一些文件名;10一些文件名;1.一些文件名;2.一些文件名;2.一些文件名;等等

我如何按顺序重命名这些文件?我有一点心理障碍,因为我不清楚替换将如何影响字符串的可变长度的第一部分,同时保留字符串其余部分的完整性,例如,一旦前缀达到一定长度,它将截断字符串其余部分。我的第二个问题是如何在for循环中一致地识别不断变化的前缀以重命名?我不认为我可以使用固定的子字符串来获取前缀,因为我将获取字符串的一部分或太多。我假设在使用replace方法之前,我需要编写某种函数来计算和规范化前缀。我想在我的情况下,我可以抓取并替换前三个字符,忽略前面的字符。但我想找到一种更通用、更易于维护的方法

这里有一个片段,我想是弄错了

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;请添加想要的结果。谢谢,当我午餐没有喝几杯葡萄酒时,我会测试这个。这听起来肯定会满足我的需要,并处理边缘案例。这看起来也很有用…明天必须尝试。非常感谢。