起源
写过Javascript代码的人,估计没有几个不知道underscore这个类库的,因为它太好(有)用了,尽管现如今由于实现上不够优雅的缘故,已经被lodash取代。而我想介绍的是underscore.string,github 上的
star 已经有3000+,它原本是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.md 这样的亲和url的格式。
想法
接触这个类库的时候,我正在使用 google guava,惊讶于这里头的各类操作,包括 ImmutableList、CharMatcher、Strings 等等。一来准备针对 guava 练练手,二来确实想学习一下 underscore.string 的操作,所以就开始着手写起了 underscore.string.java 这个项目。编写的过程中确实学到了不少平常不太可能接触到的特性和设计方法。
项目介绍
这个类库已经正式在 Maven Central Repository 发布了 0.0.1 版本。
前置条件
- java >= 1.6
- guava 18.0
安装
gradle
repositories {
mavenCentral()
}
dependencies {
compile 'com.lambeta:underscore.string.java:0.0.1'
}
maven
<dependency>
<groupId>com.lambeta</groupId>
<artifactId>underscore.string.java</artifactId>
<version>0.0.1</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