Переписать строку пути Javascript - PullRequest
0 голосов
/ 21 сентября 2011

В Javascript у меня есть строка для пути, которая выглядит следующим образом:

/xxx:Level1/yyy:Level2/xxx:Level3/ccc:Level4

Префикс может или не может быть для каждого уровня.Мне нужно создать новую строку, которая исключает префикс на каждом уровне папки, что-то вроде:

/Level1/Level2/Level3/Level4

ОК.Я сделал что-то вроде следующего, но я думаю, что с помощью регулярных выражений это можно сделать более компактным.Как я мог это сделать?

var aa = "/xxx:Level1/yyy:Level2/xxx:Level3/ccc:Level4"

var bb = aa.split("/").filter(String);
var reconstructed = "";

for( var index in bb )
{
 var dirNames = bb[index].split(":");
 if(dirNames.length==1) reconstructed += "/" + dirNames[0];
 else if(dirNames.length==2) reconstructed += "/" + dirNames[1];
 }

Ответы [ 4 ]

4 голосов
/ 21 сентября 2011

Вы можете использовать регулярные выражения следующим образом:

var str = "/xxx:Level1/yyy:Level2/xxx:Level3/ccc:Level4";
var out = str.replace(/\/[^:\/]+:/g, "/");
alert(out);

Это соответствует:

/
followed by one or more characters that is not a : or a /
followed by a :
and replaces all that with a / effectively eliminating the xxx:

Демо здесь: http://jsfiddle.net/jfriend00/hbUkz/

2 голосов
/ 21 сентября 2011
var a = "/xxx:Level1/yyy:Level2/xxx:Level3/ccc:Level4";
var b = a.replace(/\/[^\/]*:/g, "/");
2 голосов
/ 21 сентября 2011

Например:

var bb = aa.replace(/\/[a-z]+:/g, '/');

Измените [a-z], чтобы включить любые символы, которые могут появиться в префиксе, или просто используйте [^\/:].

1 голос
/ 21 сентября 2011
aa = aa.replace(/\/[^:\/]\:/g, "/");

Эта функция будет заменять каждый случай "/xxx:" на "/", используя RE, где xxx: - префикс.

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