有谁知道GitHub.com使用哪种正确的官方算法来编码内部标题的fragment_id链接?
(我希望这不再被视为太宽泛的问题了。)
我反向设计GitHub如何调整Markdown格式链接到内容标题。这似乎很奇怪,所以我猜我做错了。也许你已经知道如何改进它(除了链接,这里为了可读性而跳过了)。
首先我发现了这样一个字符串
1.2.3-a Łukasz_testing? header `special characters`;.,links How+they%20 behave
将被编码为
123-a-%C5%81ukasz_testing-header-special-characterslinks-howthey20-behave
。
我用:
重新创建了相同的结果function(string) {
string = string.replace(/[A-Z]+/g,function(v) { return v.toLowerCase(); });
string = string.replace(/[^a-z0-9-\s\u00BF-\u1FFF\u2C00-\uD7FF\w]+/g,'');
string = string.replace(/[\s\t ]+/g, '-');
string = encodeURIComponent(string);
return string;
}
但它看起来很笨重。任何想法与原作有多接近?
答案 0 :(得分:1)
我同意@elclanrs,链接看起来更简洁:
function(string) {
return encodeURIComponent(string.replace(/[A-Z]+/g,function(v) { return v.toLowerCase(); })
.replace(/[^a-z0-9-\s\u00BF-\u1FFF\u2C00-\uD7FF\w]+/g,'')
.replace(/[\s\t ]+/g, '-'));
}
我不会寻找一个“明智的”实现(例如“一个正则规则来统治它们”),这个实现简单易读 - 这样可以很容易维护。