博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava库学习:学习使用Strings和Charsets类
阅读量:7065 次
发布时间:2019-06-28

本文共 2941 字,大约阅读时间需要 9 分钟。

hot3.png

    链接地址:

    前两篇,我们学习了Joiner和Splitter来完成字符串和集合之间的转换,Guava中也提供了许多强大的处理字符串的API,今天我们来学习 Guava中的Strings和Charsets类,其中Strings类提供了一些常用的字符串处理的工具方法,Charsets类则包装了一些常用的 字符集常量。

    在Java的String类中有一个getBytes()方法,用于得到一个操作系统默认编码格式的字节数组,根据操作系统的不同,得到的数组长度也不一 样,很多时候,我们会在工作中遇到乱码,这时候就需要通过getBytes(String decode)方法来返回字符串在该decode编码下的byte数组表示,在处理的时候我们经常需要处理一个 UnsupportedEncodingException的异常,略显麻烦,Guava中的Charsets很好的回避了这一点。

    

    接下来,我们通过下面的代码来学习Strings和Charsets类,可以参考代码中的注释学习,代码如下:

package guava; import com.google.common.base.Charsets;import com.google.common.base.Strings;import org.junit.Test; import java.io.UnsupportedEncodingException; /** * Strings:处理字符串的工具类 * Charsets:字符集常量 * User: Realfighter * Date: 2014/8/14 * Time: 13:21 */public class StringsTest {     private static final String string = "test";//测试用字符串    /**     * 输出方法     * @param obj     */    private void print(Object obj) {        System.out.println(String.valueOf(obj));    }     /**     * Charsets是一个字符集常量类,包装了常用的字符集常量     */    @Test    public void testCharsets() {        print(Charsets.UTF_8);        print(Charsets.ISO_8859_1);        print(Charsets.US_ASCII);        print(Charsets.UTF_16);        print(Charsets.UTF_16BE);        print(Charsets.UTF_16LE);        byte[] bytes;        try {            bytes = string.getBytes("UTF-8");            //如果手动指定编码,这里可能会有一个不支持编码的异常        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        //使用string.getByters(Charsets.UTF_8)避免了此异常        //不过没有GBK编码,可能是guava开发组的人忘记了        bytes = string.getBytes(Charsets.UTF_8);    }     /**     * Strings:字符串常用处理方法     */    @Test    public void testStrings() {        //我们需要将测试字符串变成一个长度为6的字符串,位数不够的话填充字符c        //这样的需求,经常出现在有金额表示的时候,如4.0补充到4.000        //传统的做法,我们需要循环追加,如下        StringBuilder sb = new StringBuilder(string);        char c = 's';        for (int i = 0; i < 6 - string.length(); i++) {            sb.append(c);        }        print(sb.toString());//testss         //guava中提供了padEnd(param1,length,param2)方法        //将param1的长度改变为length,长度不足的话向后追加字符param2        print(Strings.padEnd(string, 6, c));//testss        //这里如果param1的长度大于length,则默认返回原字符串param1        print(Strings.padEnd(string, 2, c));//test        //与之类似,也有padStart()方法,向前追加,长度超出默认返回原字符        print(Strings.padStart(string, 6, c));//sstest         //另外,还有几个常用的方法        //nullToEmpty:将null值转为空字符串        print(Strings.nullToEmpty(null));//""        //emptyToNull:将空字符串转为null        print(Strings.emptyToNull(""));//null        //isNullOrEmpty:判断字符串为null或空字符串        print(Strings.isNullOrEmpty(null));//true        //repeat:用于将指定字符串循环拼接多次返回        print(Strings.repeat(string,3));//testtesttest         //另外,有两个方法用来进行字符串的比较        //commonSuffix:返回两个字符串中相同的后缀部分        print(Strings.commonSuffix("nihaoma?","nibuhaoma?")); //haoma?        //commonPrefix:返回两个字符串中相同的前缀部分        print(Strings.commonPrefix("nihaoma?","nibuhaoma?")); //ni     } }

转载于:https://my.oschina.net/realfighter/blog/349785

你可能感兴趣的文章
Net Core中数据库事务隔离详解——以Dapper和Mysql为例
查看>>
C#练习4
查看>>
java学习的知识点---第一部分
查看>>
【进阶修炼】——改善C#程序质量(1)
查看>>
获取本机IP地址和MAC地址
查看>>
django框架使用mysql报错,及两种解决方法
查看>>
操作系统实验一 命令解释程序的编写
查看>>
蛰伏多年的 HTML5 创业者,终于被送上了风口
查看>>
python遍历
查看>>
解决棘手问题的法宝
查看>>
hibernate.cfg.xml常见配置
查看>>
Json map
查看>>
N-tier architecture N层架构 (转)
查看>>
你不了解PHP的10件事情
查看>>
java之struts2的action的创建方式
查看>>
Windows 10下安装配置Caffe并支持GPU加速(修改版)
查看>>
全局Threshold和动态阈值分割Dyn_Threshold的应用场景
查看>>
SPOJ1026 概率DP
查看>>
git提交代码到远程仓库
查看>>
什么是JSON ?
查看>>