【问题标题】:How to replace irregular string prefix using Javascript?如何使用 Javascript 替换不规则字符串前缀?
【发布时间】:2020-02-16 19:13:11
【问题描述】:

所以,我有一个字符串数组,其中包含不规则的非顺序前缀(例如 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; 等。

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

我认为这是一个 sn-p,它正在吠叫错误的树...

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
]

如果能找到一个可以处理多个字符长前缀字符串的结果,或者确保前缀重命名不会截断字符串的其余部分,那就太好了。

谢谢

【问题讨论】:

  • 请添加想要的结果。

标签: javascript node.js loops


【解决方案1】:

假设您将这些文件名放在一个数组中。你可以这样做。

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.map((item, index) => {
  const splited = item.split(".");
  splited.splice(0, 1); // remove the prefix
  return `${index + 1}. ${splited.join(".")}`;
});
console.log(newArr);

【讨论】:

  • 这看起来也很有用...明天必须尝试一下。非常感谢。
【解决方案2】:

正则表达式可以帮助您解决问题。

我假设您要删除的前缀是所有示例文件名开头的数字:

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

您可以通过regular expression tester 在线试用, 然后将其合并到您的程序中。

newFile = file.replace(/^\d+\.\s+/, prefix);

要了解更多信息:

附:正则表达式适用于所有编程语言。 它们很难学习,因为它们非常紧凑,但是一旦你 了解可以在多种编程语言中使用它们的基础知识。

【讨论】:

  • 谢谢,当我午饭没有几瓶酒的时候会测试一下。这听起来绝对可以满足我的需要并处理边缘情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多