当前位置: 首页 > 面试题库 >

用于生成代码的Java代码/库(用于漂亮的URL)

米子轩
2023-03-14
问题内容

诸如Rails和Django之类的Web框架内置了对“子弹”的支持,“子弹”用于生成可读且对SEO友好的URL:

  • Rails中的子弹

团状串典型地只包含的字符a-z0-9-且可因此在不URL转义(认为“富%20巴”)编写的。

我在寻找一个Java蛞蝓函数给出任何有效的Unicode字符串将返回蛞蝓表示(a-z0-9-)。

一个普通的子弹函数可能类似于:

return input.toLowerCase().replaceAll("[^a-z0-9-]", "");

但是,此实现无法处理国际化和重音符号(ë> e)。解决此问题的一种方法是枚举所有特殊情况,但这并不是很好。我在寻找一些经过深思熟虑的方法。

我的问题:

  • 在Java中生成Django / Rails类型子弹的最通用/实用方法是什么?

问题答案:

使用规范分解规范化您的字符串:

  private static final Pattern NONLATIN = Pattern.compile("[^\\w-]");
  private static final Pattern WHITESPACE = Pattern.compile("[\\s]");

  public static String toSlug(String input) {
    String nowhitespace = WHITESPACE.matcher(input).replaceAll("-");
    String normalized = Normalizer.normalize(nowhitespace, Form.NFD);
    String slug = NONLATIN.matcher(normalized).replaceAll("");
    return slug.toLowerCase(Locale.ENGLISH);
  }

但是,这仍然是一个相当幼稚的过程。对于s-sharp(德语中使用的ß)或任何非基于拉丁语的字母(希腊语,西里尔字母,CJK等),它都不会做任何事情。

更改字符串大小写时请多加注意。 大写和小写形式取决于字母。在土耳其语中,U + 0069( i )的大写字母是U + 0130( İ),而不是U + 0049( I),因此,如果String.toLowerCase()在土耳其语区域设置下使用,则可能会在字符串中引入非latin1字符。



 类似资料:
  • 本文向大家介绍C#生成漂亮验证码完整代码类,包括了C#生成漂亮验证码完整代码类的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 我正试图用我的MERN stack web应用程序自动化构建过程。 目前,我使用CodePipeline,它: 从GitHub获取我的代码作为源代码 使用CodeBuild(Ubuntu 2.0)运行构建 并将其部署到我的Elastic BeanStalk环境中 步骤1 在尝试使用CodeBuild之后,即使客户端似乎完全按照日志进行构建,前端似乎也不会更新。 以下是我CodeBuild项目的一些

  • 我有一个带有HiberNate的Spring MVC应用程序。早些时候,我有一个类,它与每个实体的会话(数据库)一起工作,一切都很好。现在,我有一个抽象的道类,它由每个实体的一个类继承。当我想在数据库中插入新数据时,一切都很好。但是当我想更新数据时,它们会到达控制器(我可以在控制台中打印它们),但是HiberNate不会生成用于更新的sql代码。我打开HiberNate的属性来显示sql,我看到h

  • 注: 内容来自官网资料 Java Generated Code 这个页面准确描述 protocol buffer 编译器为任何给定协议定义生成的java代码。proto2和proto3生成的代码之间的任何不同都将被高亮 - 注意在这份文档中描述的是这些生成代码的不同,而不是基本的消息类/接口,后者在两个版本中是相同的。在阅读这份文档之前你应该先阅读 proto2语言指南 和/或 proto3语言指

  • 概况 背景 当我们在写一些UI测试的时候,我们总需要到浏览器去看一下一些DOM的变化。比如,我们点击了某个下拉菜单,会有另外一个联动的下拉菜单发生了变化。而如果这个事件更复杂的时候,有时我们可能就很难观察出来他们之间的变化。 ShowCase Luffa Screenshot 源码见:https://github.com/phodal/luffa 基本原理 尽管这里的例子是以Jasmine作为例子

  • 问题内容: 13在我的本地设置中开始表现出非常奇怪的行为。 即,在添加到现有项目中的任何新类中,均不起作用。因此,在新类中声明任何类型的对象变量,然后键入该变量的名称,然后键入点号(。)之后,对于相应对象的任何方法都没有建议。 例如,在声明之后 键入不会显示该类中所有方法的列表,以便从中选择一个。实际上,当键入点(。)时,没有任何建议出现,并且在IDE窗口的左下角(状态栏中),显示消息“期望的标识