как заменить \ на \\ используя строковые функции javascript - PullRequest
2 голосов
/ 12 октября 2010

У меня есть следующий путь к файлу

var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png"

как я могу заменить \ на \ так, чтобы он печатал

var imagepath="C:\\Documents and Settings\\Mahesh\\Desktop\\images\\advts.png"

Ответы [ 5 ]

8 голосов
/ 12 октября 2010

Вам необходимо использовать метод replace () , избегая при этом символа \ в каждом случае:

imagepath = imagepath.replace(/\\/g, "\\\\");
//-> "C:\\Documents and Settings\\Mahesh\\Desktop\\images\\advts.png"

Если imagepath определено с одиночными символами обратной косой черты, они будут преобразованы в escape-последовательность вместе с символами, следующими за ними. На этом этапе уже слишком поздно заменять обратную косую черту, поскольку они удаляются из результирующей строки.

2 голосов
/ 12 октября 2010

Это строковый литерал. К тому времени, когда он назначен для imagepath, escape-последовательности уже проанализированы и обработаны, и обратные слеши больше не существуют в строке. Вы просто должны иметь их в строке в первую очередь.

Чтобы продемонстрировать, что я имею в виду:

>>> var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png"
>>> imagepath
"C:Documents and SettingsMaheshDesktopimagesadvts.png"

Нет способа исправить проблему на этом этапе.

1 голос
/ 12 октября 2010

Вы можете использовать метод строки replace(). Заменить на W3Schools.com .

Пример:

var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png"
document.write(imagepath.replace("\\", "\\\\"));

Upate Как сказал reko_t , как только путь назначен на imagepath, это обработанный литерал. Символы \ исчезают. Я только что проверил свой код на этом примере, и, к сожалению, нет способа его исправить.

<html>
    <head>
        <script type="text/javascript">
            function init() {
                var imagepath="C:\Documents and Settings\Mahesh\Desktop\images\advts.png"
                alert(imagepath.replace(/\\/g, "\\\\"));
            }
        </script>
    </head>
    <body onload="init()">

    </body>
</html>

Единственный способ сделать это - заменить \ на \\ на стороне сервера и присвоить его imagepath, прежде чем он будет преобразован в javascript, который должен использоваться javascript.

0 голосов
/ 23 марта 2017

Попробуйте это:

str.replace(new RegExp('/', 'g'),'-')
0 голосов
/ 12 октября 2010

Просто добавьте после инициализации var imagepath

var imagepath=imagepath.replace("\", "\\");

returnpath imagep;

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