2010-10-04 3 views
2

У меня есть файл javascript, который запускается через работу с окном с помощью cscript. Тем не менее, я не могу понять, что эта штука работает правильно. Внутри файла он в основном принимает URL-адрес и преобразует его в UNC-путь.JavaScript заменить все/на в строке?

например: http://mysite.com/document1.htm к \ MyServer \ document1.htm

Однако, я не могу показаться, чтобы получить/'s, чтобы перейти \' s, и я в недоумении почему.

Я пробовал 2 вещи в основном

1) str = str.replace(/\/g, "\\"); 
2) str = str.replace("/", "\\"); 

Любая идея, почему это не будет работать?

Спасибо, Dave

+0

+1 Действительно интересно, после того, как он заменяет первую косую черту, он делает ее scape вторым .. действительно интересно .. –

ответ

8

Это как это:

str = str.replace(/\//g, "\\"); 

/ на конце нормальный формат /pattern/, вам необходимо дополнительное для \ побега, you can test it out here.

+1

И 'str = str.replace ("/"," \\ ");' не работает потому что, если не указано иное (с помощью регулярного выражения с модификатором 'g'), JavaScript заменяет только первое вхождение. – Tomalak

+0

- это просто регулярное выражение для \ или есть еще один escape-символ, который я не вижу. Он отлично работает, но хотел бы понять, почему – Dave

+0

является самой большой ссылкой в ​​мире! Я искал что-то подобное навсегда. – EmmyS

1

Вы можете использовать следующий трюк:

str = str.split("/").join("\\"); 

Более общо:

function replaceAll(str, a, b) { 
    return str.split(a).join(b); 
} 

Это позволяет избежать регулярных выражений кошмаров.

Смежные вопросы