Java String 常用方法详解

目录

 

String简介

常用api

1.String.valueOf(基本类型)

2.String.format(String format,Object... args)

3.replace(CharSequence oldchar,CharSequence newchar)

4.replaceAll(String regex,String replacement)

5.replaceFirst(String regex,String replacement)

6.toUpperCase()

7.toLowerCase()

8.split(String regex)

9.split(String regex,int limit)


String简介

String即java字符串,在java编程中字符串的作用非常大,小到一些常量的定义,大到把类转成json或者bson字符串在网络间传输,都要用到String类。初学者不用了解String太深层的机制,学一个技术第一步就是先学会使用,因此本文重点讲常用api,更深层的知识,后续会写一篇 java String深入解析 供大家参考学习。那么String类有哪些常用方法呢,下面将挑出一些重要api进行讲解和举例。注:本文只讲每个方法的常用参数和基本用法,更多详情请参考如下java api。

百度网盘链接: jdk 1.6 1.8中文api 提取码: mugz 

常用api

1.String.valueOf(基本类型)

接收参数:基本类型。

返回值:基本类型的字符串形式,比如true->"true"。

举例:

boolean flag=true;
String str=String.valueOf(flag);

2.String.format(String format,Object... args)

接收参数:format:格式字符串,args:格式字符串对应的参数。

返回值:格式化之后的String。

举例:

//format是一个很复杂的函数,在这里说两种常用的用法
		
/*
* 1.用%s格式化字符串,
* 比如拼接url,拼接sql,用+号和"会显得特别不美观,用format看着比较简洁。
* 假设我想得到这样的一个sql:select name from studnet where sno='10086' and gender='female'
* 其中sno和gender是传递过来的参数,以下为自己拼接(sql1)和用string format(sql2)的对比,
* 两者得到的结果一样,而sql2明显看着比较整洁,更容易理解,而且不容易出错。
*/		
String sno="10086";
String gender="female";
String sql1="select name from studnet where sno='"+sno+"'"+" and gender='"+gender+"'";
String sql2=String.format("select name from studnet where sno='%s' and gender='%s'", sno,gender);
		
//2.用%t格式化时间,%t后还可以跟参数,常用的有,%tc:详细时间,%tF:年-月-日,%tT:时-分-秒
Date date=new Date();
System.out.println(String.format("%tc", date));
System.out.println(String.format("%tF", date));
System.out.println(String.format("%tT", date));
		
/*
* 运行结果:
* 星期一 七月 15 23:00:34 GMT+08:00 2019 
* 2019-07-15 
* 23:00:34
*/

3.replace(CharSequence oldchar,CharSequence newchar)

4.replaceAll(String regex,String replacement)

5.replaceFirst(String regex,String replacement)

repalce家族三兄弟就放到一起对比着说了。

接收参数:这三个函数接受的参数都是两个,前面的是旧的,不要的,后面的是新的,替换的

返回值:替换后的字符串。

不同之处在于:

1.replace()只是简单的对字符或字符串的替换,而replaceAll()和replaceFirst()支持对正则表达式的替换。

2.replaceFirst()只替换第一个,另外两个是全部替换。

举例如下:

String str="ababc"; 
str=str.replace("ab", "a");
System.out.println(str);//输出为aac

str="ababc";
str=str.replaceAll("a[^a]+?", "a");//正则勉强模式,找到a后面不是a的字符串就替换
System.out.println(str);//输出为aac
		
str="ababc";
str=str.replaceFirst("a[^a]+?", "a");
System.out.println(str);//输出为aabc

6.toUpperCase()

返回值:字符串的大写形式。

7.toLowerCase()

返回值:字符串的小写形式。

举例:

String str = "aBcD";
System.out.println(str.toLowerCase());//输出为abcd
System.out.println(str.toUpperCase());//输出为ABCD

8.split(String regex)

接收参数:分割所用正则表达式或者字符串。

返回值:用正则表达式或字符串分割的String数组。

注:1.在jdk源码中,split(regex)会去调一个名称也为split的重载方法split(regex,0),下面介绍这个方法并举例说明两者区别。

       2.如果regex不匹配输入的字符串,那么所得数组只具有一个元素,即此字符串。

9.split(String regex,int limit)

接收参数:regex:分割所用正则表达式或字符串,limit:控制正则匹配的次数或者说是分割后的字符串个数。

返回值:分割后的String数组。

注:limit 参数控制匹配的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则最多匹配n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么将匹配尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么将匹配尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

下面举例说明:

String str = "this is a split testttt";
// 首先用split(" "),用空格分割
String[] strArray = str.split(" ");
System.out.println(Arrays.toString(strArray));// 输出为:[this, is, a, split, testttt]

// 用split(" ",0),空格分隔,limit为0
String[] strArray1 = str.split(" ", 0);
System.out.println(Arrays.toString(strArray1));// 输出和上面一样,因为上面的方法的实现就是调用这个方法。

// 用split(" ",0),空格分隔,limit为2,意思就是只分割一次,分割成两个,找到第一个就不往后匹配
String[] strArray2 = str.split(" ", 2);
System.out.println(Arrays.toString(strArray2));// 输出为:[this, is a split testttt],可以看到数组只有两项,只分割了第一个空格

// 下面看一下limit<0和=0的区别,按t分割
		
// limit<0
String diff = "attbtt";
String[] strArray3 = diff.split("t", -1);// 只要<0,不管是几,分割结果都一样,就是全部分割。
System.out.println(Arrays.toString(strArray3));// 输出为[a, , b, , ],可以看到中间和末尾的空字符串也会被分割出来。
		
// limit=0
String[] strArray4 = diff.split("t", 0);
System.out.println(Arrays.toString(strArray4));//输出为[a, , b],可以发现中间的空字符串还有,末尾的没有了。
		
//由上可知,limit<0和=0的区别就是<0不忽略最后的空字符串,=0忽略最后的空串。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值