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

2020-09-25 10:40:22 浏览数 (1)

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()

普通

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

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

代码语言:javascript复制
        String str = "hello";
        char[] data = str.toCharArray();
        for(int x=0;x<data.length;x  ){
            Log.d("TAG",data[x] "、");
        }

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

代码语言:javascript复制
        String str = "helloworld";
        char[] data = str.toCharArray();
        for(int x=0;x<data.length;x  ){
            data[x] -=32; //变成大写
        }
        Log.d("TAG",new String(data));
        Log.d("TAG",new String(data,5,5)); 

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

代码语言:javascript复制
    public static boolean isNumber(String str){
        char[] data = str.toCharArray();
        for(int x=0;x<data.length;x  ){
            if(data[x]<'0' || data[x]>'9'){
                return false;
            }
        }
        return true;
    }

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

普通

编码转换

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

代码语言:javascript复制
        String str = "hello";
        byte[] data = str.getBytes();
        for(int x=0;x<data.length;x  ){
            data[x] -=32;
        }
        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)

普通

替换第一个内容

【举例】:观察替换操作

代码语言:javascript复制
        String str = "hello";
        System.out.println(str.replaceAll("l","L"));//输出heLLo
        System.out.println(str.replaceFirst("l","L"));//输出heLlo

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

代码语言:javascript复制
        String str = "h e llo";
        System.out.println(str.replaceAll(" ",""));//输出hello

7、字符串拆分

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

序号

方法名称

类型

描述

1

public String[] split(String regex)

普通

全部拆分

2

public String[] split(String regex,int limit)

普通

部分拆分

【举例】:观察全部拆分

代码语言:javascript复制
        String str = "hello world";
        String[] data = str.split(" ");
        for (int i=0;i<data.length;i  ){
            System.out.println(data[i]);
        }

【举例】:观察部分拆分

代码语言:javascript复制
        String str = "hello world nice china";
        String[] data = str.split(" ",2);
        for (int i=0;i<data.length;i  ){
            System.out.println(data[i]);
        }

【举例】:拆分IP地址

代码语言:javascript复制
        String str = "192.168.1.1";
        String[] data = str.split(".");
        for (int i=0;i<data.length;i  ){
            System.out.println(data[i]);
        }

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

代码语言:javascript复制
        String str = "192.168.1.1";
        String[] data = str.split("\.");
        for (int i=0;i<data.length;i  ){
            System.out.println(data[i]);
        }

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

代码语言:javascript复制
        String str = " h  ello   ";
        System.out.println(str.trim());

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

代码语言:javascript复制
    public static String initCap(String str){
        if(str==null || str.length()==0){
            return str;
        }
        return str.substring(0,1).toUpperCase() str.substring(1);
    }

0 人点赞