#node.js
Вопрос:
Как я могу проверить, есть ли в каталоге часть строки, как показано ниже :
примеры каталогов:
c:devtestmodulesfrontend-jspackagesfederated-search-result-portletassetslocalessvtranslation.json
c:devtestmodulesfrontend-jspackagesfederated-search-result-portletassetslocalesentranslation.json
c:devtestmodulesfrontend-jspackagesfederated-search-result-portletassetslocalesfrtranslation.json
path.basename(file) ==='translation.json' amp;amp; dir.includes("\assets\locales\en") amp;amp; !dir.includes("\assets\locales\en_")
поэтому мне нужно больше фильтровать по определенной части каталога :
как мне нужно, когда в каталоге есть «активылокалиru»
Он работает в Windows, но я хочу, чтобы он был и в Linux
Ответ №1:
В последней версии NodeJS вы можете использовать эти два метода, где первый использует includes()
метод.
const yourString = "c:devtestmodulesfrontend-jspackagesfederated-search-result-portletassetslocalesfrtranslation.json";
const substring = "assetslocalesfr";
console.log(yourString.includes(substring)); // true
console.log(yourString.indexOf(substring) !== -1); // true
Конечно, в вашем примере вы должны изменить строковую переменную на свои path.basename(file)
значения, чтобы они не были статичными, как это, и представляли собой строку пути к каталогу.
Чтобы заставить его работать в Windows и Linux одновременно, вы можете либо заменить «/»и «» с помощью регулярного выражения, либо заменить() методом, предполагающим, что ваш путь представляет собой обычную строку, представляющую путь.
В любом случае вы также можете использовать поиск по регулярному выражению. В приведенном выше примере это было бы:
yourString.match(regex)
Где может быть создано ваше регулярное выражение, имейте в виду, что вам нужно будет заменить либо «активылокалиfr», либо «активы/локали/fr».
При использовании регулярного выражения общепринятый подход заключается в использовании символа / в качестве разделителя, например:
s/pattern/replacement/g;
Но вы можете использовать любой символ вместо /, например, канал:
s|pattern|replacement|g;
Затем, имея это в виду, вы можете построить свое регулярное выражение. Пример: https://regex101.com/r/eQ7aV6/2
Кроме того, имейте в виду, что вы можете удалить косую черту назад/вперед, а затем искать путь без нее, например assetslocalesfr
, или изменить его другим символом.
Комментарии:
1. Как вы думаете, это будет работать с linux, так как в linux есть другой способ иметь пути
2. Да, если у вас есть строка, вы можете попробовать либо сравнить оба способа, либо использовать регулярное выражение или заменить (), чтобы изменить «/» на «» и так далее.
3. @Хани, я только что улучшил ответ