在Ruby on Rails中,您可以轻松地将“任意”文本转换为适用于子域名/路径名的格式。
1) "I am nobody." -> "i-am-nobody"
2) "Grünkohl is a german word." -> "grunkohl-is-a-german-word"
我想在客户端执行此操作以获得高响应性(替代方案是通过Ajax)。
最后一个例子称为音译(将变音符号和其他非拉丁字母字母转换为拉丁字母)。音译将是一个很好的2个功能(在这种情况下,我可以回退到Ajax让Iconv这样做。)
有人知道如何使用JavaScript吗?我当前的代码工作正常但有多个空格的问题,而Tête-à-tête
变成了Tte--tte
,这只是丑陋。
答案 0 :(得分:9)
当我需要这个时,我使用了Django javascript实现,这包括大部分内容甚至更多:)
可以在这里找到: https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/static/admin/js/urlify.js
答案 1 :(得分:0)
urlify for node.js npm package https://npmjs.org/package/parameterize
答案 2 :(得分:0)
这里是一个JS,用于将传递的俄语短语音译为英语以满足URL需求。可以修改其数据以申请法语或任何其他语言。除了字母和数字之外的任何内容都用" - ",double和结束" - "被删除。
function url(word, letterVersionOrder) {
var letters = 'a b v g d e ["zh","j"] z i y k l m n o p r s t u f h c ch sh ["shh","shch"] ~ y ~ e yu ya ~ ["jo","e"]'.split(' ');
var wordSeparator = '';
word = word.toLowerCase();
for (var i = 0; i < word.length; ++i) {
var charCode = word.charCodeAt(i);
var chars = (charCode >= 1072 ? letters[charCode - 1072] : word[i]);
if (chars.length < 3) {
wordSeparator += chars;
} else {
wordSeparator += eval(chars)[letterVersionOrder];
}
}
return(wordSeparator.
replace(/[^a-zA-Z0-9\-]/g, '-').
replace(/[-]{2,}/gim, '-').
replace(/^\-+/g, '').
replace(/\-+$/g, ''));
}
这是一个更快的缩小版本:
function url(w, v) { var tr = 'a b v g d e ["zh","j"] z i y k l m n o p r s t u f h c ch sh ["shh","shch"] ~ y ~ e yu ya ~ ["jo","e"]'.split(' '); var ww = ''; w = w.toLowerCase(); for (var i = 0; i < w.length; ++i) { var cc = w.charCodeAt(i); var ch = (cc >= 1072 ? tr[cc - 1072] : w[i]); if (ch.length < 3) {ww += ch;} else {ww += eval(ch)[v];} } return(ww.replace(/[^a-zA-Z0-9\-]/g, '-').replace(/[-]{2,}/gim, '-').replace(/^\-+/g, '').replace(/\-+$/g, ''));}
通过here。