2015-04-19 3 views
0

Я пишу CRUD людей в Метеор, и мне нужны красивые URL-адреса, такие какКак заменить тире с пробелами и двойные тире с тире?

www.mysite.com/John-Doe.

(На самом деле, мое реальное предпочтение будет www.mysite.com/JohnDoe, но реализация может быть немного сложнее.)

Для того, чтобы достичь этого, мне нужно, чтобы иметь возможность переводить с «John-Doe», «John Doe» и «John-Doe-Smith» John Doe-Smith ».

Я мог бы, конечно, использовать предварительную замену« - »на некоторый временный символ, но выглядящий для более элегантного решения.

(Edit: после написания этого, я просто понял, что я могу дезинфицировать имя, чтобы свернуть несколько белых пространств es и тире в одну первую; но теперь мне любопытно более общий ответ).

+0

Или есть более красивый способ кодирования имен? – Ruby

+0

Пробовал '' a-b ​​'.replace (/ - (?! -)/g,' ') ', но он возвращает' 'a-b" '. Что такое регулярное выражение для замены всех * одиночных * тире, оставляя только несколько тире? – Ruby

+0

В итоге я заменил пробелы символами подчеркивания, а не тире: «John_Doe-Smith». Тем не менее, мой вопрос. – Ruby

ответ

1

Возможно, вы захотите ознакомиться с библиотекой underscore.string, доступной Meteor с помощью meteor add underscorestring:underscore.string.

// Replace dashes with spaces: 
s.humanize("no-dash"); 
// => "no dash" 

// Dashes to camel case: 
s.camelize("John-Doe"); 
// => "JohnDoe" 

// Double dashes to single dashes: 
s.replaceAll("John-Doe--Smith", "--", "-"); 
// => "John-Doe-Smith" 

// Join two names with dashes: 
s.join("-", "John", "Doe"); 
// => "John-Doe" 

В ряде случаев существует несколько способов, чтобы получить тот же результат, в том числе методы более изящной и с учетом, чем выше.

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