Java——String类常用方法总结,看这一篇就够啦(比较、查找、截取、替换、拆分、其他)

举报
Winter_world 发表于 2021/09/28 22:54:36 2021/09/28
【摘要】 目录 1、字符与字符串 2、字节与字符串 3、字符串比较 4、字符串查找 5、字符串截取 6、字符串替换 7、字符串拆分 8、其他操作方法 1、字符与字符串 很多编程语言都会用字符数组描述字符串,Java也有类似概念,String类中有一系列字符相关的操作方法: 序号方法名称类型描述1 public String...

目录

1、字符与字符串

2、字节与字符串

3、字符串比较

4、字符串查找

5、字符串截取

6、字符串替换

7、字符串拆分

8、其他操作方法


1、字符与字符串

很多编程语言都会用字符数组描述字符串,Java也有类似概念,String类中有一系列字符相关的操作方法:

序号 方法名称 类型 描述
1

public String(char[] value)

构造 将全部的字符数组作为String的内容
2

 public String(char[] value,intt offset,int count)

构造 将部分字符数组变为字符串,设置字符数组的开始索引与使用个数
3

public char charAt(int index)

普通 返回指定索引位置的字符
4

 public char[] toCharArray()

普通 将字符串以字符数组的形式返回

【举例】:字符串与字符数组间的转换


  
  1. String str = "hello";
  2. char[] data = str.toCharArray();
  3. for(int x=0;x<data.length;x++){
  4. Log.d("TAG",data[x]+"、");
  5. }

字符串转换为字符数组后,可针对其中每一个字符进行操作,比如将小写字母转换为大写字母:


  
  1. String str = "helloworld";
  2. char[] data = str.toCharArray();
  3. for(int x=0;x<data.length;x++){
  4. data[x] -=32; //变成大写
  5. }
  6. Log.d("TAG",new String(data));
  7. Log.d("TAG",new String(data,5,5));

【举例】:判断某一字符串是否全部由数字组成:将字符串转换为字符数组,便于进行每个字符的判断其范围是否在'0'~'9'之间;


  
  1. public static boolean isNumber(String str){
  2. char[] data = str.toCharArray();
  3. for(int x=0;x<data.length;x++){
  4. if(data[x]<'0' || data[x]>'9'){
  5. return false;
  6. }
  7. }
  8. return true;
  9. }

2、字节与字符串

字节与字符串的转换,在实际开发中较多,以下几个方法:

序号 方法名称 类型 描述
1

 public String(byte[] bytes)

构造 将全部的字节数组变为字符串
2

 public String(byte[] bytes,intt offset,int count)

构造 将部分字节数组变为字符串,设置字节数组的开始索引与使用个数
3

 public byte[] getBytes()

普通 将字符串变为字节数组
4 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 普通 编码转换

【举例】:利用字节数组实现小写字母变换为大写字母


  
  1. String str = "hello";
  2. byte[] data = str.getBytes();
  3. for(int x=0;x<data.length;x++){
  4. data[x] -=32;
  5. }
  6. System.out.println(new String(data));

以上代码只是针对字节的简单操作,实际开发中字节的使用通常结合IO、网络进行的。

3、字符串比较

由前面几个博文可知,字符串比较方法有equals方法,此方法是区分大小写的比较,Java中针对字符串比较的方法有:

序号 方法名称 类型 描述
1 public boolean equals(Object anObject) 普通 区分大小写的字符串比较(是否相等)
2 public boolean equalsIgnoreCase(String anotherString) 普通 不区分大小的字符串比较(是否相等)可用于验证码
3 public int compareTo(String anotherString) 普通 比较字符串大小
4 public int compareToIgnoreCase(String str) 普通 不区分大小的比较字符串大小

compareTo方法最为重要,如 A.compareTo(B)返回结果有三种:

  • >0: 字符串A>B;
  • <0:字符串A<B;
  • =0:字符串A=B;

应用比较简单,不再举例喽。

4、字符串查找

从一个完整的字符串中查找子字符串,有以下方法:

序号 方法名称 类型 描述
1 public boolean contains(CharSequence s) 普通 判断某一个字符串是否存在
2 public int indexOf(String str) 普通 取得某一个字符串的索引位置,找不到返回-1
3 public int indexOf(String str,int fromIndex) 普通 从指定索引位置开始检索子字符串位置,找不到就返回-1
4 public int lastIndexOf(String str) 普通 从后向前查找指定字符串,找不到返回-1
5 public int lastIndexOf(String str,int fromIndex) 普通 从指定位置,由后向前查找指定字符串,找不到返回-1
6 public boolean startsWith(String prefix) 普通 判断是否以某个字符串开头
7 public boolean startsWith(String prefix, int toffset) 普通 从指定位置判断是否以某个字符串开头
8 public boolean endsWith(String suffix) 普通 是否以某个字符串结尾

要查找中间的内容,基本都是使用contains()方法,但是它只能查找,不能判断位置,JDK1.5以后出现的方法,1.5之前只能用indexOf()方法。

startsWith()方法、endsWith()方法在开发中比较实用。

5、字符串截取

将完整字符串 截取子字符串,方法如下:

序号 方法名称 类型 描述
1 public String substring(int beginIndex) 普通 从指定索引位置(包含该位置的字符)截取至末尾
2 public String substring(int beginIndex, int endIndex) 普通 截取指定索引范围内的字符串(包含起始索引,不包含end索引)

实际开发这种截取操作很常用,比较简单,不再举例赘述了。

6、字符串替换

将指定字符串替换为其他内容,如下方法:

序号 方法名称 类型 描述
1 public String replaceAll(String regex,String replacement) 普通 字符串的全部替换
2 public String replaceFirst(String regex,String replacement) 普通 替换第一个内容

【举例】:观察替换操作


  
  1. String str = "hello";
  2. System.out.println(str.replaceAll("l","L"));//输出heLLo
  3. System.out.println(str.replaceFirst("l","L"));//输出heLlo

实际开发中,利用替换操作可以消除数据中的全部空格:


  
  1. String str = "h e llo";
  2. System.out.println(str.replaceAll(" ",""));//输出hello

7、字符串拆分

将完整字符串根据指定内容进行拆分,拆分后的结果为字符串数组,方法如下:

序号 方法名称 类型 描述
1 public String[] split(String regex) 普通 全部拆分
2 public String[] split(String regex,int limit) 普通 部分拆分

【举例】:观察全部拆分


  
  1. String str = "hello world";
  2. String[] data = str.split(" ");
  3. for (int i=0;i<data.length;i++){
  4. System.out.println(data[i]);
  5. }

【举例】:观察部分拆分


  
  1. String str = "hello world nice china";
  2. String[] data = str.split(" ",2);
  3. for (int i=0;i<data.length;i++){
  4. System.out.println(data[i]);
  5. }

【举例】:拆分IP地址


  
  1. String str = "192.168.1.1";
  2. String[] data = str.split(".");
  3. for (int i=0;i<data.length;i++){
  4. System.out.println(data[i]);
  5. }

可以发现,按“.”拆分无结果返回,不能直接按"."拆分,因为其属于正则表达式的范畴。所以,需要进行转义,使用"\\"。


  
  1. String str = "192.168.1.1";
  2. String[] data = str.split("\\.");
  3. for (int i=0;i<data.length;i++){
  4. System.out.println(data[i]);
  5. }

8、其他操作方法

除以上方法外,还有一些小的操作方法:

序号 方法名称 类型 描述
1 public int length() 普通

取得字符串的长度(中英文长度一致,方便开发)

注意,String中使用的是方法,数组中使用的是属性

2 public boolean isEmpty() 普通 判断是否为空(""),若是返回true,否则返回false
3 public String toUpperCase() 普通 针对字母,转大写
4 public String toLowerCase() 普通 针对字母,转小写
5 public String trim() 普通 去掉左右空格,不去中间字符
6 public String concat(String str) 普通 字符串的连接(基本不会使用,与+相同)

【举例】:观察trim


  
  1. String str = " h ello ";
  2. System.out.println(str.trim());

【举例】很遗憾,String类中没有提供initcap()函数的功能,用于首字母大写,开发中很常用,我们自己实现


  
  1. public static String initCap(String str){
  2. if(str==null || str.length()==0){
  3. return str;
  4. }
  5. return str.substring(0,1).toUpperCase()+str.substring(1);
  6. }

 

作于202004022240,已归档

———————————————————————————————————

本文为博主原创文章,转载请注明出处!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

文章来源: winter.blog.csdn.net,作者:Winter_world,版权归原作者所有,如需转载,请联系作者。

原文链接:winter.blog.csdn.net/article/details/105233704

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。