zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Java八大常用类(三) String类(重要,重点掌握)

2023-03-07 09:11:47 时间

字符串相关类,面试问的多,但是应用简单

String类的简单掌握方法

package oop2.demo06;

import javax.sound.midi.Soundbank; import java.util.Locale; import java.util.UUID;

public class StringB {

public static void main(String[] args) {

    String a = "beijing";
    String b = "";   //空字符串
    String c = null;  //空对象   不能使用isEmpty() 方法

    System.out.println(a.length());   //返回字符串的长度     重要
    System.out.println(b.isEmpty());   //是否为空
    System.out.println(a.startsWith("ei"));    //判断是否是以  ei 开头
    System.out.println(a.endsWith("ing"));   //判断是否是 以  ing 结尾
    System.out.println(a.toUpperCase());    //转换为英文大写
    System.out.println(a.toLowerCase());   //转为小写

    System.out.println("================================字符串查找方法(全部掌握)=======================");

    System.out.println(a.charAt(0));    //查找字符串中的第n个字母 (底层代码是以char类型的数组,数字从0开始)
    System.out.println(a.indexOf("i"));   //查找字符串中i,第一次出现的时候,数组索引数值,根据指定的字符串查询指定下标,找不到返回-1

    System.out.println(a.indexOf("j",2));   //从指定位置查询字符下标.从数组下标为(2)开始,顺序找,找到j的字符下标

    System.out.println(a.lastIndexOf("j",6));   //从数组下标为(6)开始找开始,倒序找,找到j的字符下标

    System.out.println(a.substring(2,6));  //从数组下标为(2)到数组下标(6)截取字符串,找到j的字符下标
    System.out.println(a.substring(2));    //从数组下标为(2)开始截取字符串,一直到结束

    String fileName = "2.3.93.jpg";
    int i = fileName.lastIndexOf(".");
    System.out.println(i);

    //文件后缀
    String substring = fileName.substring(i);
    System.out.println(substring);

    //文件名称
    String uuid = UUID.randomUUID().toString();   //随机生成文件名
    System.out.println(uuid+substring);

}

} 字符串的分割、连接、去空格等方法 package oop2.demo06;

import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Arrays;

public class StringC {

public static void main(String[] args) throws UnsupportedEncodingException {

    String str = "beijing北京";

    System.out.println("========================字符串中的转化方法======================");

    byte[] bytes = str.getBytes();

    String str2 = new String(bytes,"GBK");   //可以给指定的字符串进行重新的编码,我们以后会使用

    System.out.println(Arrays.toString(bytes));

    System.out.println("========================字符串中的拼接、替换、查询是否含有======================");

    String str3 = "b-j-n-u";
    System.out.println(str3.contains("b"));         //判断是否含有指定的字符串,掌握
    System.out.println(str3.replace("b","北"));     //把b替换成北  。替换指定的字符串内容,掌握
    System.out.println(str3.replaceAll("j","京"));   //替换指定的字符串内容,支持正则表达式,掌握

    System.out.println(str3.concat("yyy"));     //b-j-n-uyyy
    str3.concat("a");
    str3.concat("b");
    str3.concat("c");
    System.out.println(str3);    //b-j-n-u

    str3= str3.concat("a");
    str3= str3.concat("b");
    str3= str3.concat("c");
    System.out.println(str3);    //b-j-n-uabc
    //str3= str3.concat("a").concat("b").concat("c");

    System.out.println("========================字符串分割(掌握)======================");

    String str5 = "b-j-n-u";
    String[] split =  str5.split("-");
    System.out.println(Arrays.toString(split));     //分割,按照指定的字符位置开始分割字符串

    String str6 = " b j n u ";
    System.out.println("------->"+str6.trim()+"<--------");   //去除字符串中的开始和结束的空格

}

} 字符串的比较大小 package oop2.demo06;

public class StringD {

public static void main(String[] args) {
    String str = "bjnu";
    String str2 = "Bjnu";

    System.out.println(str.equals(str2));   //是否相等
    System.out.println(str.compareTo(str2));   //比较两个字符串的大小,区分大小写的
    System.out.println(str.compareToIgnoreCase(str2));  //   比较字符串的大小写,不区分大小写
}

} 举例子 package oop2.home; /*

获得指定后缀yy.uu.jj.png

*/

public class Demo1 {

public static void main(String[] args) {
    String str = "yy.uu.jj.png";
    int i = str.lastIndexOf(".");     //获得最后一个.的下标
    System.out.println(str.substring(i));   //根据最后一个点的下标,开始截取
}

} package oop2.home; /*

按照要求把对应学科提取出来   ”java-前端-AI-后台-大数据“

*/

import java.util.Arrays;

public class Demo2 {

public static void main(String[] args) {
    String str = "java-前端-AI-后台-大数据";
    String[] split = str.split("-");
    System.out.println(Arrays.toString(split));
}

} package oop2.home;

/*

从键盘录入一个String身份证,判断是否合法:
位数是否是18位数
前17位数必须是数字
最后一位可以是数字或者是X

*/

public class Demo3 {

public static void main(String[] args) {
    String str = "440906200001253285";

    if(str.length()==18){
        for (int i = 0; i < str.length()-1; i++) {
            char c = str.charAt(i);
            if(!Character.isDigit(c)){
                System.out.println("用户身份证前17位必须是数字");
                return;
            }
        }
        char c2 = str.charAt(17);
        if(Character.isDigit(c2)||"X".equals(Character.toString(c2))||'X'==c2){
            System.out.println("身份证合法");
        }else {
            System.out.println("不合法");
        }

    }else {
        System.out.println("身份证必须是18位");
    }

}

} package oop2.home; /*

校验一个邮箱是否合法:123456789@qq.com
必须有@
. 和 @不能在开头和结尾
.必须在@之后,且不能相邻
不能有连续的两个.
@只能有一个
. 只能有一个

*/

public class Demo4 {

public static void main(String[] args) {
    String str = "123456789@qq.com";

    //获得第一个@的下标
    int a1 = str.indexOf("@");

    //获得最后一个@的下标
    int a2 = str.lastIndexOf("@");

    //获得第一个 .  的位置
    int b1 = str.indexOf(".");

    //获得最后一个  . 的位置
    int b2 = str.lastIndexOf(".");

    //获得 .. 的下标
    int i = str.indexOf("..");

    /*
        b1>a1+1   所表达的含义
        b1的值一定是大于0
        @的位置在 . 之前的    @的位置就一定不会在最后
        . 必须在@之后且不相邻
     */

    if (a1>0 && a1==a2 && b1>a1+1 && b2<str.length()-1 && i<0){
        System.out.println("合法");
    }else {
        System.out.println("非法");
    }

}

}