专栏首页编舟记一个Java中操作字符串的类库 (Underscore.string.java)

一个Java中操作字符串的类库 (Underscore.string.java)

Underscore.string.java 是什么?

underscore.string.java 是一个Java中方便操作字符串的类库,提供了众多帮助方法。

起源

写过 Javascript 代码的人,估计没有几个不知道 underscore 这个类库的,因为它太好(有)用了,尽管现如今由于实现上不够优雅的缘故,已经被lodash所取代。而我想介绍的是 github 上 star 3000+的 underscore.string,它原本是 underscore 的扩展,不过现在已经演变成独立的库。顾名思义,它的作用就是弥补 Javascript 本身对于字符串操作支持的匮乏。 举个例子:

var slugify = require("underscore.string/slugify");
slugify("Hello world!");

-> hello-world

slugify是一种规整字符串的操作,常用于把url中的非法字符规整成 word-word 的模样。比如,我的这篇 blog 是通过 hexo 生成的 hexo new "Underscore.string.java",它会自动帮我转换成 2017-09-06-Underscore-string-java 这样的亲和url的格式。

想法

接触这个类库的时候,我正在使用 google guava,惊讶于这里头的各类操作,包括 ImmutableList、CharMatcher、Strings 等等。一来准备针对 guava 练练手,二来确实想学习一下 underscore.string 的操作,所以就开始着手写起了 underscore.string.java 这个项目。编写的过程中确实学到了不少平常不太可能接触到的设计方法。

项目介绍

这个类库已经正式发布在 Maven Central Repository. 最新版本是 0.2.0.

前置条件

  • java >= 1.6
  • guava 18.0

安装

gradle

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.lambeta:underscore.string.java:0.2.0'
}

maven

<dependency>
    <groupId>com.lambeta</groupId>
    <artifactId>underscore.string.java</artifactId>
    <version>0.2.0</version>
</dependency>

支持的特性

  • capitalize
  • slugify
  • count
  • trim
  • ltrim
  • rtrim
  • repeat
  • decapitalize
  • join
  • reverse
  • clean
  • chop
  • splice
  • pred
  • succ
  • titleize
  • camelize
  • dasherize
  • underscored
  • classify
  • humanize
  • quote
  • unquote
  • surround
  • numberFormat
  • strRight
  • strRightBack
  • strLeft
  • strLeftBack
  • toSentence
  • truncate
  • lpad
  • rpad
  • lrpad
  • words
  • prune
  • isBlank
  • replaceAll
  • swapCase
  • naturalSort
  • naturalCmp
  • dedent
  • commonPrefix
  • commonSuffix
  • chopPrefix
  • chopSuffix
  • screamingUnderscored
  • stripAccents
  • pascalize
  • translate
  • mixedCase
  • collapseWhitespaces
  • ascii
  • chomp
  • startsWith
  • endsWith
  • levenshtein
  • hamming
  • longestCommonSubstring

New Features in 0.2.1-SNAPSHOT

gradle

repositories {
    maven {
        url 'https://oss.sonatype.org/content/groups/public'
    }
}

dependencies {
    compile ("com.lambeta:underscore.string.java:0.2.1-SNAPSHOT")
}

maven

<repositories>
    <repository>
      <id>my-repo</id>
      <name>sonatype</name>
      <url>https://oss.sonatype.org/content/groups/public</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.lambeta</groupId>
    <artifactId>underscore.string.java</artifactId>
    <version>0.2.1-SNAPSHOT</version>
</dependency>
  • replaceZeroWidthDelimiterWith

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何发布Jar包到Maven Central Repository

    Maven Central 网站并不提供注册的功能,你需要到 Sonatype 网站上进行注册。而事实上,Sonatype 网站也没有直接提供一个注册链接。真正...

    lambeta
  • 创建数字钱包(三)助记词

    BIP39[1]定义了一种将计算机产生的随机数翻译成人类可读的方式,初衷很简单:结合BIP32[2],辅助人类记忆产生主密钥的种子。

    lambeta
  • 生成式测试(Generative Testing)

    满足需求是所有软件存在的必要条件,单元测试一定是为它服务的。从这一点出发,我们可以总结出写单元测试的两个动机:驱动(如:TDD)和验证功能实现。另外,软件需求易...

    lambeta
  • Hive使用ORC格式存储离线表

    我是攻城师
  • 深入理解string和如何高效地使用string

    无论你所使用的是哪种编程语言,我们都不得不承认这样一个共识:string是我们使用最为频繁的一种对象。但是string的常用性并不意味着它的简单性,而且我认为,...

    蒋金楠
  • 什么是匿名委托?

    使用Delegate的时候很多时候没必要使用一个普通的方法(比如说上一篇文章中说的用Test()方法来传进去 定义的委托名字Mydelegate ),因为这个方...

    静心物语313
  • 2019-7-23-使用代码启动服务

    第一个是设置服务的启动类型——手动、自动、自动(延时启动)、禁用,第二个是控制服务的状态——启动、停止、暂停、恢复。

    黄腾霄
  • Java基础之数组

    (1)数组:存储同一种数据类型的多个元素的容器(注意和集合的区别 后面的总结之中有)。

    南风
  • C#学习---基础入门(四)C#中的字符与字符串

    字符 char(单个字符) 用单引号 ,例如char a=‘a’;可以通过调用char类下的方法进行一些操作,具体通过help查看其相关方法

    互联网CEO
  • ES6展开运算符

    目前为止,我们都是使用Function.prototype.apply方法来将一个数组展开成多个参数:

    :::::::

扫码关注云+社区

领取腾讯云代金券