【java】String类常见操作

秋招做题需要,总结String类常用api如下:

简单的:str.length()、str.isEmpty()、str.split(“;”)切割

1.字符串反转:借助StringBuilder/StringBuffer,(常用StringBuilder类,因为快)

// 字符串反转
    public static String reverseString(String str) {
        StringBuffer sBuffer = new StringBuffer(str);
        String string = sBuffer.reverse().toString();
        return string;
    }

2.截取字符串:substring()方法

substring(int beginIndex, int endIndex)

第一个int为开始的索引,对应String数字中的开始位置,第二个是截止的索引位置,对应String中的结束位置

从beginIndex开始取,到endIndex结束,下标从0开始,取出的字符串不包括endIndex位置的字符

public static void main(String[] args) {
        String str = "abcdefgh";
        //substring(int beginIndex, int endIndex)
        //从beginIndex开始取,到endIndex结束,不包括endIndex位置的字符
        String res = str.substring(1, 3);
        System.out.println(res);
    }

输出:bc

3.删除字符串中的前几个数据:substring()方法【也就是保留某个数据以后的数据】

public static void main(String[] args) {
    String str1 = "abcdefghqwertyui";
    //取索引为8往后的字符串(包含索引为8的字符)
    //也就是删除索引0-7的前8个数据
    String res1 = str1.substring(8);
    System.out.println(res1);
}

输出:

qwertyui

4.截取字符串的后几位:substring()方法

public static void main(String[] args) {
        String str1 = "abcdefghqwertyui";
        //取出最后两位
        String res1 = str1.substring(str1.length()-2);
        System.out.println(res1);
    }

输出:

ui

5.遍历字符串中的每一个字符:charAt()方法、toCharArray()方法          感觉两种方法差别不大,习惯其中一个方法就行

(1)charAt()方法返回指定索引位置的char值

把遍历出来的char拼成一个新的字符串

public static void main(String[] args) {
        String str1 = "0123456";
        String res = "";
        for (int i = 0; i < str1.length(); i++) {
            char everyWord = str1.charAt(i);
            //当想要某一些不连续的字符拼成新的字符串的时候:
            //需要用到--把取出的char拼成字符串
            if(i%2==0) {
                res = res +everyWord;
            }
        }
        System.out.println(res);
    }

输出

0246

(2)toCharArray()方法

toCharArray()方法:将字符串对象中的字符转换为一个字符数组

public static void main(String[] args) {
        String str1 = "0123456";
        String res = "";
        char[] charArray = str1.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            if (i % 2 == 0) {
                res = res + charArray[i];
            }
        }
        System.out.println(res);

    }

输出

0246

6.字符串中是否包含另一个字符串 indexOf()方法、contains()方法

indexOf()方法:返回要匹配的字符串第一次出现的索引的位置,没出现过返回-1

contains()方法:判断是否包含指定字符串,包含返回true,不包含返回false

lastIndexOf()方法: 要匹配的字符串最后一次出现的索引

public static void main(String[] args) {
        String str1 = "0123456";
        int firstIndex = str1.indexOf("34");
        System.out.println(firstIndex);//字符3的下标
        boolean flag = str1.contains("56");
        System.out.println(flag);
    }

输出

3
true

7.判断两个字符串中的内容是否相同:equals()方法

public static void main(String[] args) {
        String str1 = "0123456";
        String str2 = "0123456";
        boolean flag = str1.equals(str2);
        System.out.println(flag);
    }

输出

true

equalsIgnoreCase() 判断两个字符串是否是一样的(可以忽略字母大小写)

public static void main(String[] args) {
        String str1 = "A0123456";
        String str2 = "a0123456";
        boolean flag1 = str1.equals(str2);
        boolean flag2 = str1.equalsIgnoreCase(str2);
        System.out.println(flag1);
        System.out.println(flag2);
    }

输出

false
true

8.移除字符串的空格:trim()方法

trim()方法:移除字符串两边的空格

public static void main(String[] args) {
        String str1 = "  A0123456  ";
        String str2 = str1.trim();
        System.out.println(str2);
    }

输出

A0123456

移除任意位置的空格

public static void main(String[] args) {
        String str = "  1 2 3 4 5   ";
        System.out.println(StringDemo.removeSpace(str));
        System.out.println(StringDemo.removeSpace2(str));
        
    }
    
    //自己写一个可以去除字符串任意位置空格的方法
    //运用toCharArray()
    public static String removeSpace(String str) {
        String strRes = "";
        char[] charArray = str.toCharArray();
        for (char c : charArray) {
            if (c!=' ') {
                strRes=strRes+c;
            }
        }
        return strRes;
    }
    
    //运用charAt()
    public static String removeSpace2(String str) {
        String strRes = "";
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c!=' ') {
                strRes=strRes+c;
            }
        }
        return strRes;
    }


9.字符串是否以指定字符串开头、结尾:startsWith()、endsWith()

public static void main(String[] args) {
        String str = "wsmOffers";
        boolean flag1 = str.startsWith("wsm");
        boolean flag2 = str.endsWith("Offers");
        boolean flag3 = str.endsWith("wsm");
        System.out.println(flag1);
        System.out.println(flag2);
        System.out.println(flag3);
    }

输出

true
true
false

10.把该字符串转换成 小写字符串:toLowerCase()、把该字符串转换成 大写字符串:toUpperCase()

public static void main(String[] args) {
        String str = "wsmOffers";
        String res1 = str.toUpperCase();
        String res2 = str.toLowerCase();
        System.out.println("res1="+res1);
        System.out.println("res2="+res2);
    }

输出

res1=WSMOFFERS
res2=wsmoffers

11.把任何类型的数据转换成字符串类型

(1)方法1:前面也用到过,任何类型的数据,拼接一个字符串就会变成字符串

个人感觉这种方法适用于一个字符一个字符的拼接中

public static void main(String[] args) {
        String str = "01234";
        String res = "";
        for (int i = 0; i < str.length()-2; i++) {
            char everyWord = str.charAt(i);
            //字符串拼接的方法
            res = res +everyWord;
        }
        System.out.println(res);
    }

输出

012

(2)方法2:valueOf()

静态类型的方法,直接类名.方法        int--->String

public static void main(String[] args) {
        int a = 123;
        String res = String.valueOf(a);
        System.out.println(res);
    }

String--->int

public static void main(String[] args) {
        //String--->int
        String str = "123";
        int num = Integer.valueOf(str);
        System.out.println(num);
    }

12.补充:把char转换为int类型

public static void main(String[] args) {
        String str = "0123";
        for (int i = 0; i < str.length(); i++) {
            char num = str.charAt(i);
            //char转int
            int num0101 = (int) num - (int) '0';
            System.out.println(num0101);
        }
    }

13.在该字符串中,将给定的旧字符,用新字符替换、将给定的旧字符串,用新字符串替换

replace(s1,s2),用字符串s1代替原字符串中的s2

如果找不到就输出原字符串

public static void main(String[] args) {
        String str = "wsmOffers";
        //可以替换字符
        String res1  = str.replace('w', 'q');
        //可以替换字符串
        String res2 = str.replaceAll("Offers", "BATJTMD");
        //找不到就输出原字符串
        String res3 = str.replaceAll("offers", "BATJTMD");
        System.out.println("res1="+res1);
        System.out.println("res2="+res2);
        System.out.println("res3="+res3);
    }

输出

res1=qsmOffers
res2=wsmBATJTMD
res3=wsmOffers

刷题过程中遇到什么再补充…

原文地址:https://www.cnblogs.com/yuange678/p/10623439.html