Java基础练习(八)字符串常用方法的使用

1、现在有字符串:String s1=" SSSCCsdfgsdAX@$#67 ";

​ String s2=“sssdCCsdfGSDAX@$#67”;
​ 完成以下操作:【默认的是对 s1操作】
​ (1):保存在字符数组中;
​ (2):取得第三个元素值;
​ (3):打印输出该字符串的每个字符;
​ (4):截取"sd"该子串;
​ (5):返回"67"的下标位置
​ (6):返回"gsd"的最后一个下标位置
​ (7):判断两个字符串是否相等【两种方法操作】
​ (8):将两个字符串进行连接为一个字符串,s2在前面,s1在后面
​ (9):去掉s1前后空格
(10):将s1只要是大写字符全部转为小写
(11):判断最后面的字串是不是“67”
(12):判断s2最前面的字串是不是“sss”

public class Test01 {
    public static void main(String[] args) {
        //对String字符串进行操作,原有的字符串没有改变,而是创建了一个新的对象进行操作
        String s1=" SSSCCsdfgsdAX@$#67 ";
        String s2="sssdCCsdfGSDAX@$#67";

//        转为字符数组
        char[] chars = s1.toCharArray();

        //获取下标为2的字符
        System.out.println(s1.charAt(2));

        //打印字符串中的每一个字符
        for(char c:chars){
            System.out.print(c+",");
        }
        System.out.println();

        //截取sd
        System.out.println(s1.substring(6,8));

        //返回67元素下标
        System.out.println(s1.indexOf("67"));

        //返回gsd的最后一个下标位置
        System.out.println(s1.indexOf("gsd")+2);

        //判断两个字符串是否相等
        System.out.println(s1.equals(s2));//输出true相等
        System.out.println(s1.compareTo(s2));//输出0相等

        //拼接字符串
        System.out.println(s2+s1);
        System.out.println(s2.concat(s1));

        //去掉前后空格
        System.out.println(s1.trim());

        //转为小写
        System.out.println(s1.toUpperCase());

        //判断最后的字符串是否为67
        System.out.println(s1.endsWith("67"));

        //判断s2前面的字符串是否为sss
        System.out.println(s2.startsWith("sss"));
    }
}
2、字符串解析,现有一字符串,“卡巴斯基#杀毒软件#免费版#俄罗斯#”,解析出每个元素。
public class Test {
    public static void main(String[] args) {
        String s="卡巴斯基#杀毒软件#免费版#俄罗斯#";
        String[] split = s.split("#");//分割为一个字符串数组
        for (String s1:split){
            System.out.println(s1);
        }

    }
}
3、“那车水马龙的人世间,那样地来 那样地去,太匆忙”,第二次出现"那"的位置。
public class Test01 {
    public static void main(String[] args) {
        String s="那车水马龙的人世间,那样地来 那样地去,太匆忙";

        System.out.println(s.indexOf("那", s.indexOf("那"))+1);
    }
}
4、有一身份证号,判断此为男还是女,基于此方法,写一个算法,判断一个身份证号为男还是女。
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        System.out.println("身份证号");
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();
        System.out.println(next.charAt(16));
        if(next.charAt(17)%2!=0){
            System.out.println("女生");
        }else {
            System.out.println("男生");
        }
    }
}
5、如下字符串,01#张三#20-02#李四#30-03#王五#40。。。。。。,解析每个人分数多少。样式如下:

01 张三 20
02 李四 30
03 王五 40。并且计算总分。

public class T {
    public static void main(String[] args) {
        String s="01#张三#20-02#李四#30-03#王五#40";

        //使用空格替换#
        String replace = s.replace("#", " ");

        //以-作为分隔符,将分隔开的字符串作为元素存储在字符串数组中
        String[] split = replace.split("-");

        //总分
        int sum=0;

        //遍历字符串数组
        for (String s1:split){
            System.out.println(s1);//输出元素
            String[] split1 = s1.split(" ");//将这个元素中的空格作为分隔符
            int a=Integer.parseInt(split1[2]);//确定字符数组中的第三个为分数,将字符串转为int类型
            sum+=a;//总分相加
        }
        System.out.println(sum);
    }
}
6、输入一个字符串,将字符串中的所有敏感词替换成**。

敏感词列表:色情,马勒戈壁,暴力,操,日。

public class Test06 {
    public static void main(String[] args) {
        String s="看起来色情的东西,不一定如我们表面所看到的那样,充满暴力," +
                "想象我们在一望无际的马勒戈壁上操练,就算是太阳高挂的日子也不能例外,那么这种东西也不过是一种调味剂罢了。";
        String[]  mgc={"色情","马勒戈壁","暴力","操","日"};

        for (String s1:mgc){
            String replace = s.replace(s1, "**");
            s=replace;//将新创建的字符串的地址指向s,在修改后的字符串上进行操作
        }
    }
}
7、输入一个字符串,判断有多少个字母?多少个数字字符?多少个汉字字符?
import java.util.Scanner;

public class Test07 {
    public static void main(String[] args) {
        System.out.println("请输入一串字符:");
        Scanner scanner = new Scanner(System.in);

         String s=scanner.next();//阻塞

        char[] chars = s.toCharArray();

        int english=0;
        int num=0;
        int china=0;

        for (char c:chars){
            if(c<='z'&&c>='a'||c<='Z'&&c>='A'){
                english++;
            }
            if(c<='9'&&c>='0'){
                num++;
            }
            //unicode中汉字对应编码
            if(c>0x4300&&c<0x9fbb){
                china++;
            }
        }
        System.out.println("英文字母"+english+",数字"+num+",汉字"+china);
    }
}
8、歌词:

朋友啊朋友,你可曾想起了我?
如果你正享受幸福,请你忘记我。
朋友啊朋友,你可曾记起了我?
如果你正承受不幸,请你告诉我。
朋友啊朋友。。。

请问“朋友”出现了多少次。

public class Lx08 {
    public static void main(String[] args) {
        String s= "朋友啊朋友,你可曾想起了我?\n" +
                "如果你正享受幸福,请你忘记我。\n" +
                "朋友啊朋友,你可曾记起了我?\n" +
                "如果你正承受不幸,请你告诉我。\n" +
                "朋友啊朋友。。。\n" ;


        String[] split = s.split("朋友");

        System.out.println(split.length-1);
    }
}
9、将字符串“我爱中华人民共和国”,变成一个倒叙的字符串。
public class lx09 {
    public static void main(String[] args) {
        String s="我爱我的祖国和人民";

        char[] chars = s.toCharArray();
        for (int i =chars.length-1; i >=0 ; i--) {
            System.out.print(chars[i]);
        }
    }
}
10、学生类:学号,姓名,成绩。

重写equals方法:如果学号相同,返回true。
重写toString方法:返回学生的信息,格式“学号-1001;姓名-张三;成绩-90”。

Student类:

import java.math.BigDecimal;
import java.util.Objects;

public class Student {
    public Student() {
    }

    public Student(BigDecimal studentId, String name, double score) {
        this.studentId = studentId;
        this.name = name;
        this.score = score;
    }

    private BigDecimal studentId;
    private  String  name;
    private double score;

    public BigDecimal getStudentId() {
        return studentId;
    }

    public void setStudentId(BigDecimal studentId) {
        this.studentId = studentId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    @Override
    public boolean equals(Object o) {
        //通过判断调用该方法的对象和传递进来的对象地址是否相同
        if (this == o) return true;

        //判断该对象引用是否为空,判断调用该方法的对象所属类是否与传入对象所属类相等
        if (o == null || getClass() != o.getClass()) return false;

        //传入对象为object类型,向下转型为Student类型
        Student student = (Student) o;

        //判断属性值是否相等
        //学号属性的数据类型为BigDecimal,调用BigDecimal类中的equals方法比较
        return studentId.equals(student.getStudentId()) ;

    }

    @Override
    public String toString() {

        return "Student{" +
                "学号=" + studentId +
                ", 姓名='" + name + '\'' +
                ", 成绩=" + score +
                '}';

    }

}

测试:

public class test {
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal("123456");
        BigDecimal bigDecimal1 = new BigDecimal("123456");

        Student student = new Student(bigDecimal, "张三", 90);
        Student student1 = new Student(bigDecimal1, "李四", 80);

        System.out.println(student.equals(student1));

        System.out.println(student.toString());
        System.out.println(student1.toString());

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值