Java基础26:String字符串常用函数

前言:不管是技术面试还是日常工作中,都会经常遇到字符串处理算法,比如最长公共序列、最长公共子串和最长回文子串就属于字符串处理的常见操作。我们除了要掌握相关的动态规划算法,还得熟悉常用的Java字符串处理方法。

1、获取

 int length() : 返回此字符串的长度,也就是字符串中的包含的字符数。

char charAt(int index): 返回指定索引处的char值

int indexOf(int ch):返回的是ch在字符串中第一次出现的索引位置

int indexOf(int ch,int fromIndex):从formIndex指定位置开始,获取ch在字符串中出现的索引位置

int indexOf(String str):返回的是str在字符串中第一次出现的索引位置

int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置

同样规则的还有lastIndexOf系列函数,不过它与indexOf函数取值方向相反,它是在字符串后边开始。

注意:

a.当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException(角标越界异常),这也是使用字符串时,比较容易出现的异常。

b.当使用indexOf函数没有找到要寻找的字符或字符串时,返回-1。

c.lastIndexOf系列函数是反向索引一个字符出现位置,与indexOf方向相反,在字符串最后开始寻找。

lastIndexOf() 方法有以下四种形式:

  • public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

  • public int lastIndexOf(int ch, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索,如果此字符串中没有这样的字符,则返回 -1。

  • public int lastIndexOf(String str): 返回指定子字符串在此字符串中最右边出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

  • public int lastIndexOf(String str, int fromIndex): 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索,如果此字符串中没有这样的字符,则返回 -1。

实例

public class Test {
    public static void main(String args[]) {
        String Str = new String("菜鸟教程:www.runoob.com");
        String SubStr1 = new String("runoob");
        String SubStr2 = new String("com");

        System.out.print("查找字符 o 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( 'o' ));
        System.out.print("从第14个位置查找字符 o 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( 'o', 14 ));
        System.out.print("子字符串 SubStr1 最后出现的位置:" );
        System.out.println( Str.lastIndexOf( SubStr1 ));
        System.out.print("从第十五个位置开始搜索子字符串 SubStr1最后出现的位置 :" );
        System.out.println( Str.lastIndexOf( SubStr1, 15 ));
        System.out.print("子字符串 SubStr2 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( SubStr2 ));
    }
}

以上程序执行结果为:

查找字符 o 最后出现的位置 :17
从第14个位置查找字符 o 最后出现的位置 :13
子字符串 SubStr1 最后出现的位置:9
从第十五个位置开始搜索子字符串 SubStr1最后出现的位置 :9
子字符串 SubStr2 最后出现的位置 :16

2 、判断

boolean contains(str):字符串中是否包含某一个子字符串

例:str.contains(“Demo”);    // 判断字符串str中是否包含” Demo”

与indexOf(str)对比:indexOf(str) 可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在,所以indexOf(str)也可以用于对指定子串判断是否包含。

例:if(str.indexOf(aa)!=-1)

区别:indexOf(str)既可以判断是否包含子串,又可以获取该子串出现的位置。

boolean isEmpty():字符串中是否有内容。原理就是判断字符串长度是否为0

boolean startsWith(String prefix):字符串是否是以指定前缀开头

例:str. startsWith (“Array”); // 判断文件名称是否是Array单词开头

boolean endsWith(String suffix):字符串是否是以指定后缀结尾

例:str. endsWith (“.java”);   // 判断文件名称是否是.java的文件

boolean equals(str):判断字符串内容是否相同。复写了Object类中的equals方法,只判断字符串内容是否相同

boolean equalsIgnoreCase():忽略大小写,判断内容是否相同

3 、转换

  char[] toCharArray():将字符串转成字符数组

  byte[] getBytes():将字符串转成字节数组

  String(byte[]):将字节数组转成字符串

  String(byte[],offset,count):将字节数组中的一部分转成字符串

 static String valueOf(int): 将基本数据类型int转成字符串

 static String valueOf(double):将基本数据类型转成字符串

4 、替换和合并

String replace(oldchar,newchar):如果要替换的字符不存在,返回的还是原串

String concat(String str):将指定字符串参数连接到此字符串的结尾

在String中,subString()、concat()和replace()等等操作都不是在原有的字符串对象上进行的,而是生成了新的String对象,然后将原String的变量引用指向新生成的对象。

注意:

concat()方法:String类的concat()方法(只能用于拼接字符串,不能拼接其他类型的数据)将指定的字符串拼接到该字符串的末尾。并且字符串本身和拼接的字符串都不能为null,否则运行程序后会报空指针异常NullPointerException(编译时没有报错)。

"+":可以对字符,数字,字符串等数据类型的拼接

append()方法:StringBuffer的方法,可以对字符,数字,字符串等数据类型的拼接,结果返回一个StringBuffer类型的对象
 

5、获取子串,截取字符串中的一部分

String substring(begin):返回一个新的字符串,它是此字符串的一个子字符串。从指定位置开始到结尾。 如果角标不存在,会出现字符串角标越界异常。

String substring(begin,end):返回一个新字符串,它是此字符串的一个子字符串。

6、 切割

String[] split(String regex):根据匹配给定的正则表达式来拆分此字符串

String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串

7 、转换大小写、去除空格和比较

String toUpperCase():将字符串全部转成大写

String toLowerCase():将字符串全部转成小写

String trim():删除字符串的头尾空白符

String replace(" ",“”):消除字符串所有空格

 int compareTo(str):对两个字符串进行字典顺序的比较。比较基于字符串中各个字符的 Unicode 值。

返回值:

 如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

参考链接:

菜鸟教程 :Java String 类

Java基础12:String、StringBuffer和StringBuilder的区别

你可能感兴趣的:(Java基础,Java字符串常用函数,String常用操作函数)