当我阅读Django代码时,我经常在模型中看到所谓的"slug".我不太确定这是什么,但我知道它与URL有关.怎么以及什么时候应该使用这个slug-thing?
(我在本词汇表中已经阅读了它的定义.)
假设我有一个包含Ü的字符串.我怎么能找到所有那些unicode字符?我应该测试他们的代码吗?我该怎么办?
例如,给定字符串"AÜXÜ",我想将其转换为"AYXY".我想对其他unicode角色做同样的事情,我不想将它们存储在某种翻译地图中.
我列出了一些比利时城市的变音字符:(Liège,Quiévrain,Franière等)我希望将这些特殊字符转换为与包含相同名称的大写字母进行比较,但没有变音符号( LIEGE,QUIEVRAIN,FRANIERE)
我首先尝试做的是使用大写:
LIEGE.contentEqual(Liège.toUpperCase())
但这不合适,因为大写Liège
是LIÈGE
和不是LIEGE
.
我有一些复杂的想法,比如替换每个角色,但这听起来很愚蠢而且过程很长.
关于如何以聪明的方式做到这一点的任何想法?
诸如Rails和Django之类的Web框架内置了对"slugs"的支持,后者用于生成可读和SEO友好的URL:
团状串典型地只包含的字符a-z
,0-9
并-
且可因此在不URL转义写入(认为"富%20巴").
我正在寻找一个Perl slug函数,给出任何有效的Unicode字符串将返回一个slug表示(a-z
,0-9
和-
).
一个超级微不足道的slug功能将是这样的:
$input = lc($input),
$input =~ s/[^a-z0-9-]//g;
Run Code Online (Sandbox Code Playgroud)
但是,这种实现不会处理国际化和重音(我想ë
成为e
).解决这个问题的一种方法是列举所有特殊情况,但这不是很优雅.我正在寻找更好的思考和一般的东西.
我的问题: