strman-java 是Java8的字符串处理库,它的灵感来自 dleitee/strman 。

Strmen-java 是一个字符串处理工具,你可以通过 maven 将它引入到项目中。除了 Java 本身的字符串处理方式外,我们还可以使用 Apache Common Langs 里的 StringUtils 来简化 String 的操作。但以上两种方式对于我们日常编程中最容易碰到的字符串处理来说,仍然显得有些不足。 Strmen-java 为我们提供了一个非常完整且强大的解决方案,使用它可以解决几乎所有字符串处理场景。

二、开始使用

为了能在你的 Java 应用程序中使用 strman-java ,可以把这个包下载下来添加到你项目的 lib 目录中,如果使用的是 Maven 做项目管理,则只需要在你的 pom.xml 中加入如下依赖即可:

<dependency>
<groupId>com.shekhargulati</groupId>
<artifactId>strman</artifactId>
<version>0.2.0</version>
<type>jar</type>
</dependency>

如果是 Gradle 用户则在 build.gradle 文件中添加如下代码:

compile(group: 'com.shekhargulati', name: 'strman', version: '0.2.0', ext: 'jar'){
transitive=true
}

三 实例

 //append在一个字符串后面追加任意的字符串
String s1 = Strman.append("f", "o", "o", "b", "a", "r");
System.out.println("append:" + s1); // result => "foobar" // prepend 在一个字符串前追加任意个数的字符串
String s1pre = Strman.prepend("r", "f", "o", "o", "b", "a");
System.out.println("prepend:" + s1pre); // result => "foobar" // appendArray 在一个字符串后先后追加一个字符串数组中的元素
String s2 = Strman.appendArray("f", new String[]{"o", "o", "b", "a", "r"});
System.out.println("append:" + s2); // result => "foobar" // at 根据字符串的索引获取到对应的字符。如果索引是负数,则逆向获取,超出则抛出异常
Optional<String> s3 = Strman.at("foobar", 3);
System.out.println("at:" + s3.get()); // result => "b" // between 得到一个字符串中,开始字符串和结束字符串之间的字符串的数组
String[] s4 = Strman.between("[abc], [def]", "[", "]");
System.out.println("between:" + Arrays.toString(s4)); // result => "[abc, def]"
System.out.println("betweenLength:" + s4.length); // result => 2 // chars 得到一个字符串中所有字符构成的字符串数组
String[] s5 = Strman.chars("title");
System.out.println("chars:" + Arrays.toString(s5)); // result => "[t, i, t, l, e]" // collapseWhitespace 替换掉连续的多个空格为一个空格
String s6 = Strman.collapseWhitespace("foo bar");
System.out.println("chars:" + s6); // result => "foo bar" // contains 判断一个字符串是否包含另外一个字符串,第三个参数,表示字符串大小写是否敏感
boolean s7 = Strman.contains("foo bar", "foo");
boolean s8 = Strman.contains("foo bar", "FOO", false);
System.out.println("contains:" + s7 + ", " + s8); // result => "true, true" // containsAll 判断一个字符串是否包含某字符串数组中的所有元素
boolean s9 = Strman.containsAll("foo bar", new String[]{"foo", "bar"});
boolean s10 = Strman.containsAll("foo bar", new String[]{"FOO", "bar"}, false);
System.out.println("containsAll:" + s9 + ", " + s10); // result => "true, true" // containsAny 判断一个字符串是否包含某字符串数组中的任意一个元素
boolean s11 = Strman.containsAny("foo bar", new String[]{"FOO", "BAR", "Test"}, false);
System.out.println("containsAny:" + s11); // result => "true" // countSubstr 判断一个字符串包含某字符串的个数
long s12 = Strman.countSubstr("aaaAAAaaa", "aaa");
long s13 = Strman.countSubstr("aaaAAAaaa", "aaa", false, false);
System.out.println("countSubstr:" + s12 + ", " + s13); // result => "2, 3" // endsWith 判断一个字符串是否以某个字符串结尾
boolean s14 = Strman.endsWith("foo bar", "bar");
boolean s15 = Strman.endsWith("foo bar", "BAR", false);
System.out.println("endsWith:" + s14 + ", " + s15); // result => "true, true" // ensureLeft 确保一个字符串以某个字符串开头,如果不是,则在前面追加该字符串,并将字符串结果返回
String s16 = Strman.ensureLeft("foobar", "foo");
String s17 = Strman.ensureLeft("bar", "foo");
String s18 = Strman.ensureLeft("foobar", "FOO", false);
System.out.println("ensureLeft:" + s16 + ", " + s17 + ", " + s18);// result => "foobar, foobar, foobar" // ensureRight 确保一个字符串以某个字符串开头,如果不是,则在前面追加该字符串,并将字符串结果返回
String s16r = Strman.ensureRight("foobar", "bar");
String s17r = Strman.ensureRight("foo", "bar");
String s18r = Strman.ensureRight("fooBAR", "bar", false);
System.out.println("ensureRight:" + s16r + ", " + s17r + ", " + s18r);// result => "foobar, foobar, fooBAR" // base64Encode 将字符串转成Base64编码的字符串
String s19 = Strman.base64Encode("strman");
System.out.println("base64Encode:" + s19); // result => "c3RybWFu" // binDecode 将二进制编码(16位)转成字符串字符
String s20 = Strman.binDecode("0000000001000001");
System.out.println("binDecode:" + s20); // result => "A" // binEncode 将字符串字符转成二进制编码(16位)
String s21 = Strman.binEncode("A");
System.out.println("binEncode:" + s21); // result => "0000000001000001" // decDecode 将十进制编码(5位)转成字符串字符
String s22 = Strman.decDecode("00065");
System.out.println("decDecode:" + s22); // result => "A" // decEncode 将字符串转成十进制编码(5位)
String s23 = Strman.decEncode("A");
System.out.println("decEncode:" + s23); // result => "00065" // first 得到从字符串开始到索引n的字符串
String s24 = Strman.first("foobar", 3);
System.out.println("first:" + s24); // result => "foo" // last 得到从字符串结尾倒数索引n的字符串
String s24l = Strman.last("foobar", 3);
System.out.println("last:" + s24l); // result => "bar" // head 得到字符串的第一个字符
String s25 = Strman.head("foobar");
System.out.println("head:" + s25); // result => "f" // hexDecode 将字符串字符转成十六进制编码(4位)
String s26 = Strman.hexDecode("0041");
System.out.println("hexDecode:" + s26); // result => "A" // hexEncode 将十六进制编码(4位)转成字符串字符
String s27 = Strman.hexEncode("A");
System.out.println("hexEncode:" + s27); // result => "0041" // inequal 测试两个字符串是否相等
boolean s28 = Strman.inequal("a", "b");
System.out.println("inequal:" + s28); // result => "true" // insert 将子字符串插入到字符串某索引位置处
String s29 = Strman.insert("fbar", "oo", 1);
System.out.println("insert:" + s29); // result => "foobar" // leftPad 将字符串从左补齐直到总长度为n为止
String s30 = Strman.leftPad("1", "0", 5);
System.out.println("leftPad:" + s30); // result => "00001" // rightPad 将字符串从右补齐直到总长度为n为止
String s30r = Strman.rightPad("1", "0", 5);
System.out.println("rightPad:" + s30r); // result => "10000" // lastIndexOf 此方法返回在指定值的最后一个发生的调用字符串对象中的索引,从偏移量中向后搜索
int s31 = Strman.lastIndexOf("foobarfoobar", "F", false);
System.out.println("lastIndexOf:" + s31); // result => "6" // leftTrim 移除字符串最左边的所有空格
String s32 = Strman.leftTrim(" strman ");
System.out.println("leftTrim:" + s32); // result => "strman " // rightTrim 移除字符串最右边的所有空格
String s32r = Strman.rightTrim(" strman ");
System.out.println("rightTrim:" + s32r); // result => " strman" // removeEmptyStrings 移除字符串数组中的空字符串
String[] s33 = Strman.removeEmptyStrings(new String[]{"aa", "", " ", "bb", "cc", null});
System.out.println("removeEmptyStrings:" + Arrays.toString(s33));// result => "[aa, bb, cc]" // removeLeft 得到去掉前缀(如果存在的话)后的新字符串
String s34 = Strman.removeLeft("foobar", "foo");
System.out.println("removeLeft:" + s34); // result => "bar" // removeRight 得到去掉后缀(如果存在的话)后的新字符串
String s34r = Strman.removeRight("foobar", "bar");
System.out.println("removeRight:" + s34r); // result => "foo" // removeNonWords 得到去掉不是字符的字符串
String s35 = Strman.removeNonWords("foo&bar-");
System.out.println("removeNonWords:" + s35); // result => "foobar" // removeSpaces 移除所有空格
String s36 = Strman.removeSpaces(" str man ");
System.out.println("removeSpaces:" + s36); // result => " strman" // repeat 得到给定字符串和重复次数的新字符串
String s37 = Strman.repeat("1", 3);
System.out.println("repeat:" + s37); // result => "111" // reverse 得到反转后的字符串
String s38 = Strman.reverse("foobar");
System.out.println("reverse:" + s38); // result => "raboof" // safeTruncate 安全的截断字符串,不切一个字的一半,它总是返回最后一个完整的单词
String s39 = Strman.safeTruncate("A Javascript string manipulation library.", 19, "...");
System.out.println("safeTruncate:" + s39); // result => "A Javascript..." // truncate 不太安全的截断字符串
String s40 = Strman.truncate("A Javascript string manipulation library.", 19, "...");
System.out.println("truncate:" + s40); // result => "A Javascript str..." // htmlDecode 将html字符反转义
String s41 = Strman.htmlDecode("Ш");
System.out.println("htmlDecode:" + s41); // result => "Ш" // htmlEncode 将html字符转义
String s42 = Strman.htmlEncode("Ш");
System.out.println("htmlEncode:" + s42); // result => "Ш" // shuffle 将给定字符串转成随机字符顺序的字符串
String s43 = Strman.shuffle("shekhar");
System.out.println("shuffle:" + s43); // result => "rhsheak" // slugify 将字符串分段(用"-"分段)
String s44 = Strman.slugify("foo bar");
System.out.println("slugify:" + s44); // result => "foo-bar" // transliterate 删除所有非有效字符,如:á => a
String s45 = Strman.transliterate("fóõ bár");
System.out.println("transliterate:" + s45); // result => "foo bar" // surround 给定的“前缀”和“后缀”来包裹一个字符串
String s46 = Strman.surround("div", "<", ">");
System.out.println("surround:" + s46); // result => "<div>" // tail 得到去掉第一个字符后的字符串
String s47 = Strman.tail("foobar");
System.out.println("tail:" + s47); // result => "oobar" // toCamelCase 转成驼峰式的字符串
String s48 = Strman.toCamelCase("Camel Case");
String s48_2 = Strman.toCamelCase("camel-case");
System.out.println("tail:" + s48 + ", " + s48_2); // result => "camelCase, camelCase" // toStudlyCase 转成Studly式的字符串
String s49 = Strman.toStudlyCase("hello world");
System.out.println("toStudlyCase:" + s49); // result => "HelloWorld" // toDecamelize 转成Decamelize式的字符串
String s50 = Strman.toDecamelize("helloWorld", null);
System.out.println("toDecamelize:" + s50); // result => "hello world" // toKebabCase 转成Kebab式的字符串
String s51 = Strman.toKebabCase("hello World");
System.out.println("toKebabCase:" + s51); // result => "hello-world" // toSnakeCase 转成Snake式的字符串
String s52 = Strman.toSnakeCase("hello world");
System.out.println("toSnakeCase:" + s52); // result => "hello_world"

strman--java8字符串工具类的更多相关文章

  1. StringUtils 字符串工具类

    package com.thinkgem.jeesite.common.utils; import java.io.File; import java.io.IOException; import j ...

  2. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  3. * 类描写叙述:字符串工具类 类名称:String_U

    /****************************************** * 类描写叙述:字符串工具类 类名称:String_U * ************************** ...

  4. Jsoup请求http或https返回json字符串工具类

    Jsoup请求http或https返回json字符串工具类 所需要的jar包如下: jsoup-1.8.1.jar 依赖jar包如下: httpclient-4.5.4.jar; httpclient ...

  5. StringUtil字符串工具类

    package com.zjx.test03; /** * 字符串工具类 * @author * */ public class StringUtil { /** * 判断是否是空 * @param ...

  6. 产生UUID随机字符串工具类

    产生UUID随机字符串工具类 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成的API.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址. ...

  7. 自用java字符串工具类

    不断封装一些常用的字符串操作加到这个工具类里,不断积累: package com.netease.lede.qa.util; import java.text.ParseException; impo ...

  8. String字符串工具类

    字符串类(StringUtil.cs) using System; namespace Sam.OA.Common { /// <summary> /// 字符处理工具类 /// 作者:陈 ...

  9. StringUtils字符串工具类左侧补齐(leftPad)、右侧补齐(rightPad)、左右两侧补齐(center)工具方法

    这里使用的是 org.apache.commons.lang.StringUtils;下面是StringUtils工具类中字符串左侧补齐的方法,示例如下: //左侧补齐 第一个参数:原始字符串,第二个 ...

  10. 字符串工具类ToStringBuilder常用方法介绍

    一.简介与引入   1.ToStringBuilder.HashCodeBuilder.EqualsBuilder.ToStringStyle.ReflectionToStringBuilder.Co ...

随机推荐

  1. [js高手之路]原型式继承与寄生式继承

    一.原型式继承本质其实就是个浅拷贝,以一个对象为模板复制出新的对象 function object( o ){ var G = function(){}; G.prototype = o; retur ...

  2. MySQL 行锁 表锁机制

    MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑.遇到了可别乱踩.通过本章内容,带你学习MySQL的行锁 ...

  3. 利用scrapy框架进行爬虫

    今天一个网友问爬虫知识,自己把许多小细节都忘了,很惭愧,所以这里写一下大概的步骤,主要是自己巩固一下知识,顺便复习一下.(scrapy框架有一个好处,就是可以爬取https的内容) [爬取的是杨子晚报 ...

  4. instr函数的"重载"

    .带两个参数的 --模糊查询,comp表的Mobel和show_name字段中含有'张' INSTR(COMP.MOBILE .带三个参数的 ) from dual; 结果: 第三个参数:从字符串&q ...

  5. 初次了解struts的action类

    Action类真正实现应用程序的事务逻辑,它们负责处理请求.在收到请求后,ActionServlet会为这个请求选择适当的Action 如果需要,创建Action的一个实例 调用Action的perf ...

  6. Angular17 Angular自定义指令

    1 什么是HTML HTML文档就是一个纯文本文件,该文件包含了HTML元素.CSS样式以及JavaScript代码:HTML元素是由标签呈现,浏览器会为每个标签创建带有属性的DOM对象,浏览器通过渲 ...

  7. Machine Learning - week 1

    Matrix 定义及基本运算 Transposing To "transpose" a matrix, swap the rows and columns. We put a &q ...

  8. 【Java学习笔记之十七】Java中普通代码块,构造代码块,静态代码块区别及代码示例分析

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 //普通代码块:在 ...

  9. BC#65 T5 ZYB's Prime

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5594 完全不会啊TAT.. 其实官方题解已经说的很清楚了.. #include <cstdio> ...

  10. HDU 1232 并查集

    畅通工程                                                                                            Time ...