Как я могу заменить обратную косую черту на строку с помощью javascript ?! (другой вопрос)

Я пытаюсь использовать плагин редактора Atom, который возвращает путь импорта для простого импорта модулей JS.

Это работает правильно в Mac и Linux, но в окнах, которые возвращают неправильный путь.

Например, правильный путь:

import Weather from '../../../helpers/weather';

Но это возвращается:

import Weather from '..\..\helpers\weather';

Я искал эту проблему в StackOverflow, но эти ответы мне не помогли. потому что этот путь возвращается из node.path, и я не могу заменить \ на /, и это не удобное решение для устранения этой проблемы.

Я искал String.raw в синтаксисе ES6, и это мне тоже не помогло.

Я хочу заменить все \ на / в этот путь импорта, и, к сожалению, JS не может знать \ в строку, и я должен попытаться исправить это.

Спасибо

Разве нельзя просто исправить плагин?

melpomene 10.09.2018 09:22

@melpomene В офисе мы должны использовать Windows, в атоме я могу редактировать плагины. Мне нужен этот трюк для плагина и для меня это большой вопрос :-)

irbgls 10.09.2018 09:25

Что должен означать ваш комментарий? Если вы можете редактировать плагины, что мешает вам это исправить?

melpomene 10.09.2018 09:27
2
3
210
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот кое-что, что может оказаться полезным

https://atom.io/packages/toggle-slash

enter image description here

Ctrl + Shift + / Toggle / (или удвоить) Ctrl + Shift + \ Toggle (или удвоить)

этот плагин мне помог. tnx

irbgls 10.09.2018 11:28

[Отредактировано] На самом деле есть способ сделать это через Javascript. Вы можете использовать функцию String.replace () с простым регулярным выражением.

Str = Str.replace(/\/gi,'/');    

Это действительно не сработает, поскольку \ - это escape-персонаж, поэтому вам нужно добавить еще один, например:

Str = Str.replace(/\\/gi,'/');    //with escape , replace / by \ globally

Вам нужно будет удвоить \ в исходной строке, иначе один \ просто экранирует символ рядом с ним.

Первый ответ будет полезным, вы также можете использовать редактор SublimeText, чтобы выбрать все / и перезаписать //.

Но если вы хотите сделать это напрямую с помощью javascript, например:

var Str = '.\.\.\helpers\weather'; // and double these, I don't know how

Проверьте это с помощью этого кода:

var Str = '..\\..\\..\\helpers\\weather';
console.log(Str);
Str = Str.replace(/\\/gi,'/');
console.log(Str);

Или создайте html-файл и скопируйте его:

	<!DOCTYPE html>
<html>
   <head>
      <title>/ to \</title>
   </head>
   <body>
      <p id="p1">Original:   </p>
      <p id="p2">Modified:   </p>
      <script>
         var Str = '..\\..\\..\\helpers\\weather';
          console.log(Str);
          document.getElementById('p1').innerHTML += Str;
         
         Str = Str.replace(/\\/gi,'/');
         console.log(Str);	
          document.getElementById('p2').innerHTML += Str;
      </script>
   </body>
</html>

Нет Нет, Str должен быть с \ not /

irbgls 10.09.2018 09:55

Так полная противоположность или что-то еще?

Guillaume 10.09.2018 10:03

Вы написали наоборот, str должна быть с обратной косой чертой, а не с косой чертой !!!

irbgls 10.09.2018 10:27

Теперь все в порядке?

Guillaume 10.09.2018 11:29

Не совсем, потому что, как я уже сказал, входная строка имеет одну обратную косую черту и не растворяется, как ваш код :-(

irbgls 10.09.2018 13:53

Другие вопросы по теме