一、概述

  提供了字符串基本操作

二、使用

2.1、字符串拼接

字符串的拼接采用的是Guava中的Joiner类中的方法

    @Test
public void testJdkJoin() {
List<String> strList = Lists.newArrayList("1", "2", null, "3", "4");
//字符串拼接,无法跳过空字符串
String str = String.join(",", strList);
Assert.assertEquals("1,2,3,4", str);
} @Test
public void testGuavaJoin() {
List<String> strList = Lists.newArrayList("1", "2", null, "3", "4");
//字符串拼接,跳过空字符串
String str = Joiner.on(",").skipNulls().join(strList);
Assert.assertEquals("1,2,3,4", str);
}

2.2、字符串分割

    @Test
public void testJdkSplit(){
String str = "1,2, 3 ,,4,";
//trimResults():去除空格,omitEmptyStrings():删除空数组
String[] strList = str.split(",");
// List<String> strList = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(str);
for (int i = 0; i < strList.length; i++) {
String s = strList[i];
System.out.println(s);
}
Assert.assertEquals(4,strList.length);
} @Test
public void testGuavaSplit(){
String str = "1,2, 3 ,,4,";
//trimResults():去除空格,omitEmptyStrings():删除空数组
List<String> strList = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(str);
strList.forEach(s -> System.out.println(s));
Assert.assertEquals(4,strList.size());
}

2.3、字符串查找【使用jdk中方法】

    @Test
public void testSearch(){
String str = "abcdef";
//包含字符串cd
Assert.assertEquals(true,str.contains("cd"));
//查找以abc开头的字符串
Assert.assertEquals(true,str.startsWith("abc"));
//查找以def结尾的字符串
Assert.assertEquals(true,str.endsWith("def"));
}

2.4、字符串变换

    @Test
public void testConversion(){
String str = "abcdef";
String newStr = str.replace("bcde","hello");
System.out.println(newStr);
Assert.assertEquals("ahellof",newStr);
String str2 = "ABC abc 123";
//打印数字
System.out.println(CharMatcher.digit().retainFrom(str2));
//打印小写字母
System.out.println(CharMatcher.javaLowerCase().retainFrom(str2));
//打印大写字母
System.out.println(CharMatcher.javaUpperCase().retainFrom(str2));
//打印所有字母
System.out.println(CharMatcher.javaLetter().retainFrom(str2));
//将多余的空格替换成一个空格
System.out.println(CharMatcher.whitespace().trimAndCollapseFrom(str2,' '));
//统计出现的字母
System.out.println(String.valueOf(CharMatcher.javaLetter().countIn(str2)));
}

输出

ahellof
123
abc
ABC
ABCabc
ABC abc 123
6

发的  

002-guava String 操作的更多相关文章

  1. guava常用操作

    Jack47 我思故我在 Google Java编程库Guava介绍 本系列想介绍下Java下开源的优秀编程库--Guava[ˈgwɑːvə].它包含了Google在Java项目中使用一些核心库,包含 ...

  2. SHell string操作 转

    本文也即<Learning the bash Shell>3rd Edition的第四章Basic Shell Programming之读书笔记之二,但我们将不限于此. String操作 ...

  3. Linq无聊练习系列8---开放式并发事务,null和 DateTime,string操作练习

    /*********************开放式并发事务,null和 DateTime,string操作练习**********************************/ //所谓并发,就是 ...

  4. 顺序容器----顺序容器操作,vector对象如何增长,额外的string操作,容器适配器

    一.顺序容器操作 1.向顺序容器添加元素 向顺序容器(array除外)添加元素的操作: 操作 说明 c.push_back(t) 在c的尾部创建一个值为t的元素.返回void c.emplace_ba ...

  5. Redis一(Redis-py与String操作)

    Redis 介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(so ...

  6. Redis源码之String操作

    0.前言 String操作是Redis操作中最基本的类型,包含get,set,mget,mset,append等等.下面我们会具体分析下一些命令的详细流程,特么简单的命令没有列出. 1.SET命令 2 ...

  7. string操作

    常用的功能测试: #! -*- coding:utf-8 -*- import string s = 'Yes! This is a string' print '原字符串:' + s print ' ...

  8. openresty开发系列18--lua的字符串string操作

    openresty开发系列18--lua的字符串string操作 string的相关操作 1)string.upper(s)接收一个字符串 s,返回一个把所有小写字母变成大写字母的字符串.print( ...

  9. ZOJ2006 一道很尴尬的string操作题

    ZOJ2006(最小表示法) 题目大意:输出第一个字符串的最小字典序字串的下标! 然后我居然想试一试string的erase的能力,暴力一下,然后20msAC了,尴尬的数据.......... #in ...

  10. linux的string操作(字符串截取,长度计算)

    按指定的字符串截取 1.第一种方法: ${varible##*string} 从左向右截取最后一个string后的字符串 ${varible#*string}从左向右截取第一个string后的字符串 ...

随机推荐

  1. linux简单的命令

    本文转自 https://www.cnblogs.com/pyyu/articles/9314206.html Linux命令行的组成结构 [root@oldboy_python ~]# [root@ ...

  2. keras模块学习之model层【重点学习】

    本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! model层是keras模块最重要的一个层,所以单独做下笔记,这块比较难理解,本博主自己还在学习这块,还在迷糊中. model的方法 ...

  3. 神经网络(14)--具体实现:put it together

    如何选择神经网络的architecture input units和output units都很好决定,关于hidden layer的层数,则一般来说是选择一个hidden layer, 或者> ...

  4. 【DP】 路面修整 usaco 2008 feb_gold

    题目描述: ``` FJ打算好好修一下农场中某条凹凸不平的土路.按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中. 整条路被分成了N段 ...

  5. SIGAI机器学习第十八集 线性模型2

    之前讲过SVM,是通过最大化间隔导出的一套方法,现在从另外一个角度来定义SVM,来介绍整个线性SVM的家族. 大纲: 线性支持向量机简介L2正则化L1-loss SVC原问题L2正则化L2-loss ...

  6. bzoj 5299: [Cqoi2018]解锁屏幕 状压dp+二进制

    比较简单的状压 dp,令 $f[S][i]$ 表示已经经过的点集为 $S$,且最后一个访问的位置为 $i$ 的方案数. 然后随便转移一下就可以了,可以用 $lowbit$ 来优化一下枚举. code: ...

  7. GDB的安装

    1.下载GDB7.10.1安装包 #wget http://ftp.gnu.org/gnu/gdb/gdb-7.10.1.tar.gz或者可以远程看下有哪些版本 http://ftp.gnu.org/ ...

  8. leetcode 712

    这道题的思路:我是根据最长公共子序列的思路得来的. 最长公共子序列是: d[i][j]表示字符串s1前i个(0-i-1)字符,和字符串s2前j个(0-j-1)字符的最长公共子序列. 分情况讨论: 当s ...

  9. UOJ426. 【集训队作业2018】石像 [状压DP,min_25筛]

    UOJ 思路 (以下思路是口胡,但正确性大概没有问题.) 刚学min_25筛的时候被麦老大劝来做这题? 结果发现这题是个垃圾二合一?? 简单推一下式子可以得到答案就是这个: \[ \sum_{T=1} ...

  10. [golang][vue] 前后端分离、微服务架构等等---通用后台权限管理系统001

    emmm暂未开源,先上图.其实有很多东东都未完成,一步一步来吧 这里是大图 这里会有二维码的,暂未写完哈 注册界面 后台 测试地址 测试地址al.landv.pw:88 测试账号:admin 测试密码 ...