String常用方法总结

Posted leilong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String常用方法总结相关的知识,希望对你有一定的参考价值。

 

和长度有关的方法

返回类型 方法名 作用

int length() 得到一个字符串的字符个数(一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符)

和数组有关的方法

返回类型 方法名 作用

byte[] getBytes() 将一个字符串转换成字节数组

char[] toCharArray() 将一个字符串转换成字符数组

String[] split(String) 将一个字符串按照指定内容劈开,根据给定正则表达式的匹配拆分此字符串。

例如:

  String user="张三,1234 13673738888";
  String  strs = user.split(",| ");//用“逗号”或“空格”进行分割

和判断有关的方法

返回类型 方法名 作用

boolean equals(String) 判断两个字符串的内容是否一模一样

boolean equalsIgnoreCase(String) 忽略大小写的比较两个字符串的内容是否一模一样

boolean contains(String) 判断一个字符串里面是否包含指定的内容

boolean startsWith(String) 判断一个字符串是否以指定的内容开头

boolean endsWith(String) 判断一个字符串是否以指定的内容结尾

int compareTo(String ):按字典顺序比较两个字符串的大小,相等返回0,大于返回正数,小于返回负数。

int compareToIgnoreCase( ):比较两个字符串的大小,不考虑大小写

和改变内容有关的方法

和改变内容有关的方法,都不会直接操作原本的字符串 而是将符合条件的字符串返回给我们,所以注意接收

返回类型 方法名 作用

String toUpperCase() 将一个字符串全部转换成大写

String toLowerCase() 将一个字符串全部转换成小写

String replace(String,String) 将某个内容全部替换成指定内容

String replaceAll(String,String) 将某个内容全部替换成指定内容,支持正则

String repalceFirst(String,String) 将第一次出现的某个内容替换成指定的内容

String substring(int) 从指定下标开始一直截取到字符串的最后,返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int,int) 从下标x截取到下标y-1对应的元素,返回一个新字符串,它是此字符串的一个子字符串。(左包含右不包含)

String trim() 去除一个字符串的前后空格

和位置有关的方法

返回类型 方法名 作用

char charAt(int) 得到指定下标位置对应的字符

int indexOf(String) 得到指定内容第一次出现的下标,如果未出现该字符,则返回 -1。

int indexOf(int ch,int fromIndex): 在此对象表示的字符序列中第一次出现的大于或等于 fromIndex 的字符的索引;如果未出现该字符,则返回 -1。

int lastIndexOf(String) 得到指定内容最后一次出现的下标,如果未出现该字符,则返回 -1。

 

String方法练习:用不同的方法统计葡萄出现的次数

public class TestString {
    public static void main(String[]args) {
        String str = "吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮"; //请统计葡萄 出现的次数
        // String str = "葡萄不吐葡萄皮,不吃葡萄倒吐葡萄"; //请统计葡萄 出现的次数
        // 第一种
        String str1 = str.replace("葡萄", " ");
        int index = str.indexOf("葡萄", 4);
        char[]data = str1.toCharArray();
        int count = 0;
        for (char a: data) {
            if (a == ‘ ‘) {
                count++;
            }
        }
        System.out.println(count);
        //第二种
        /*int count = 0;
        int x = 0;
        while (x != -1) {
            x = str.indexOf("葡萄");
            if (x != -1) {
                count++;
                str = str.replaceFirst("葡萄", "");
            }
        }
        System.out.println(count);*/
        //第三种
       /* for (int x = 0; x < str.length(); x++) {
            if (str.contains("葡萄")) {
                str = str.replaceFirst("葡萄", "");
            } else {
                System.out.println(x);
                break;
            }
        }*/
        //第四种
        /*String str1 = "葡萄不吐葡萄皮,不吃葡萄倒吐葡萄"; //请统计葡萄 出现的次数
        String[]data = str1.split("葡萄");
        if (!str1.endsWith("葡萄")) {
            //这里startsWith("葡萄")在split时,会在开头产生空串
            System.out.println(data.length - 1);
        } else {
            System.out.println(data.length);
        }*/
        //第五种
        /*int count = 0;
        int x = 0;
        while (x != -1) {
            x = str.indexOf("葡萄");
            if (x != -1) {
                if ((x + 2) < str.length()) {
                    str = str.substring(x + 2);
                }
                count++;
            }
        }
        System.out.println(count);*/
        //第六种
       /* String str2 = str.replace("葡萄", "");
        int length = str2.length();
        System.out.println((str.length() - str2.length()) / 2);*/
    }

}

 练习中文对编码的影响

public class StringDemo {
    public static void main(String[] args) {
        String s="123456789中国";
        System.out.println(s.length()); //11
        System.out.println(s.getBytes().length);//GBK下是13, UTF-8下是15
        System.out.println(hasChinese(s));
        s="12中国asd湖12南6城市学院";
        print(s);
    }

    private static void print(String s) {
        char[] ch=s.toCharArray();
        for(char c:ch){
            if((c+"").getBytes().length>1){//汉字的字节数大于1
                System.out.println("中文字符:"+c);
            }else if(c>=‘a‘&&c<=‘z‘ || c>=‘A‘&& c<=‘Z‘){
                System.out.println("英文字符:"+c);
            }else if(c>=‘0‘&&c<=‘9‘){
                System.out.println("数字:"+c);
            }
        }
    }

    private static boolean hasChinese(String s) {
        if(s.getBytes().length>s.length()){//只有含有汉字时,字符转换的字节长度才会大于字符串长度
            return true;
        }
        return false;
    }
}

练习正则表达式

public class StringDemo2 {
    public static void main(String[] args) {
        //1、字符串比较大小
        String s1="H234567中国";
        String s2="Hello Java";
        System.out.println("1、"+s1.compareTo(s2));// 返回两个字符串之差(第一个不同字符的差,即‘2’与‘e’的差:   -51)

        //2、字符串位置查找
        String s3="adc256sadf";
        String s4="c2";
        System.out.println("2、"+s3.indexOf(s4));//2

        //3、查找姓名中带“飞”字的人,查找姓“张”的人。
        String[] names= { "张三", "张无忌", "赵敏", "张飞", "岳飞", "飞龙张" };
        System.out.print("3、带“飞”的人:");
        for(String name:names){
            if(name.indexOf("飞")>=0){
                System.out.print(name+"  ");
            }
        }
        System.out.println();
        System.out.print("  姓“张”的人:");
        for(String name:names){
            if(name.indexOf("张")==0){
                System.out.print(name+"  ");
            }
        }
        System.out.println();

        // 4、查找扩展名为“.java”的文件名。
        String[] filenames = { "aa.java", "cc.doc", "34.bat", "33.java.c",
                "java.exe", "c:\\a\\a.java" };
        String ss=".java";
        System.out.print("4、扩展名为.java文件名:");
        for(String name:filenames){
            if(name.endsWith(ss)){
                System.out.print(name+"  ");
            }
        }
        System.out.println();

        //5、substring()
        String c ="abcd".substring(2,3);//  相当于数学中的:[2,3)
        System.out.println("5、“abcd”.substring(2,3)= "+c);

        //6、split()
        String user="张三,1234,13673738888";
        String strs[] = user.split(",");
        System.out.print("6、");
        for(String s:strs){
            System.out.print(s+"  ");
        }
        System.out.println();
        user="张三,1234 13673738888";
        strs = user.split(",| ");//7、用“逗号”或“空格”进行分割
        System.out.print("7、");
        for(String s:strs){
            System.out.print(s+"  ");
        }
        System.out.println();
        user="aa.bb.cc,dd,ee fff";
        strs = user.split("\\.|,| ");//8、“.”号是特殊字符,因此要用转义字符,而且要加两个
        //strs = user.split("[.]|,| ");//“[]”也是转义字符
        System.out.print("8、");
        for(String s:strs){
            System.out.print(s+"  ");
        }
        System.out.println();
        String us ="张三|1234|13673738888";
        //strs = us.split("\\|");//9、“|”不能用这种转义的方式分割,这种情况下可先采用字符替换
        us=us.replace("|", ",");//replace()返回的是一个新的字符串
        strs = us.split(",");
        System.out.print("9、");
        for(String s:strs){
            System.out.print(s+"  ");
        }
    }
}

 

以上是关于String常用方法总结的主要内容,如果未能解决你的问题,请参考以下文章

21个常用代码片段

面试常用的代码片段

js常用代码片段

MorkDown 常用语法总结

string常用方法总结

Java-String类的常用方法总结