Как заменить неправильный префикс строки, используя Javascript? - PullRequest
0 голосов
/ 16 февраля 2020

Итак, у меня есть массив строк с нерегулярными непоследовательными префиксами (например, 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; et c.

Как мне go переименовать их последовательно? У меня немного ментального блока, так как мне неясно, как замена повлияет на переменно длинную первую часть строки, сохраняя при этом целостность остальной части строки (например, как только префикс достигнет определенной длины, он будет обрезать части остальной части строки.) Моя вторая проблема заключается в том, как последовательно определить изменяющийся префикс для переименования в a для l oop? Я не думаю, что могу использовать фиксированную подстроку, чтобы получить префикс, потому что я либо захватить часть или слишком большую часть строки. Я предполагаю, что мне нужно написать какую-то функцию для оценки и нормализации префикса перед использованием метода замены. Я предполагаю, что в моем случае я мог бы просто захватить и заменить первые три символа и игнорировать «.», но я бы хотел найти более универсальный и понятный подход к этому.

Вот фрагмент я предполагаю, что это лай не того дерева ...

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
]

Было бы неплохо найти результат, который мог бы иметь дело со строками из длинных префиксов из нескольких символов или гарантировал бы, что переименование префикса не обрезало остальную строку.

Спасибо

Ответы [ 2 ]

1 голос
/ 16 февраля 2020

Если у вас есть эти имена файлов в массиве. Вы могли бы сделать что-то вроде этого.

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);
0 голосов
/ 16 февраля 2020

Регулярные выражения могут помочь вам в вашей проблеме.

Я предполагаю, что префикс, от которого вы хотите избавиться, - это число в начале всех ваших имен файлов:

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

В engli sh мы бы описали префикс, от которого мы хотим избавиться, как: некоторые числа, за которыми следуют точка и пробел.

В регулярных выражениях это записывается как:

   ^      at the beginning of the string
   \d+    match some numbers
   \.     a dot
   \s+    and some whitespace

вы можете попробовать его в Интернете в тестере регулярных выражений , а затем включить его в свою программу.

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

Чтобы узнать больше:

Регулярные выражения PS доступны на всех языках программирования. их трудно выучить, потому что они очень компактны, но как только вы поймете основы, вы сможете использовать их во многих языках программирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...