如果您能想出更好的标题,请随时进行编辑。
我正在尝试创建一个简单的 JavaScript 系统,该系统根据 URL 的 #fragment 标识符(也称为哈希值)显示特定的漫画。
当在此哈希中使用空格或类似的特殊字符时,它们将通过 URL 编码转换为 %20 或类似的序列。
这看起来不太好。因此,当您想通过 URL 中的标题引用某个漫画、博客文章等时,我相信用不同的 URL 安全符号替换所有空格和其他 URL 不安全字符是很常见的。事实上,StackOverflow 也这样做。
但是,当我想要替换的符号也存在于输入字符串中时,我该怎么办?
例如,当我将所有空格 ( ) 替换为连字符 (-) 时,我该如何处理已存在的连字符?
最佳答案
另一种解决方案是以类似于 Stack Overflow 的方式实现它。在 URL 中同时包含内部标识符和“用户友好”标识符。例如,这是此问题的“标准”链接:
http://stackoverflow.com/questions/14543452/symbol-substitution-in-urls-what-to-do-when-replacement-already-exists-in-input
但以下链接也同样有效:
http://stackoverflow.com/questions/14543452/this-part-of-the-address-is-just-to-look-nice
您可以执行类似的操作,为每个漫画和用户友好的名称添加某种标识符(可能是序列号),例如:example.com/comics/#42-the-forty-second-comic-title .
这个系统有很多好处:
- 实现起来非常简单 - 只需解析第一个破折号 (-) 之前的片段部分,并使用它来构建特定漫画的 URL
- 它允许您提供 permanent link到漫画,因为即使您碰巧更改了漫画的标题,内部标识符部分也永远不会改变
- 它允许您轻松地重命名漫画,而无需担心更新网址、图像路径等,因为漫画名称对于系统正常工作并不是绝对必要的
- 它使得仅使用客户端 JavaScript 即可轻松实现“下一个”和“上一个”按钮(因为您知道“#23-some-title”之前的漫画将变为“#23”
关于url - URL 中的符号替换 : What to do when replacement already exists in input?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543452/