2021-08-19 四个有趣的String方法

String 类综合巩固

1.编写一个方法,将一段文字中的各个单词的字母顺序翻转

例如:“I like writing code best”, 将变成 “I ekil gnitirw edoc tseb”。

//将字符串中的单词字母 顺序翻转
public static void main(String[] args){
    
    
    //测试字母顺序的反转
    String str = "I like writing code best";
    System.out.println("原字符串为"+str)
    System.out.print("反转后的字符串:"+myReverse(str));
}

//单词翻转
public String myReverse(String str){
    
    
    //1.将字符串分割为数组  字符串中 split
    String[] arr = str.split(" "); //根据空格分割  提出每一个单词
    //2.遍历字符串,将每个单词反转  StringBuffer中 reverse方法
    StringBuffer newStr = new StringBuffer();
    for(String s : arr){
    
    
        StringBuffer stringbuffer = new StringBuffer(s); //将字符串转换为 StringBuffer
        stringbuffer.reverse();    //调用StringBuffer 中的reverse 方法将字符串翻转
        newStr.append(StringBuffer).append(" ");  // 将反转的字符串进行拼接
    }
    return newStr.toString();
}

请添加图片描述

2. String s = “name = 王五 age = 18 classNum = 1101”;

将上面的字符串中包含的信息存放到Student(里面有 name age classNum 三个属性)的对象中;

创建 student 类

//String s = "name = 王五 age = 18 classNum = 1101";
//
package pojo;

/**
 * @author :@白嫖怪Ae
 * @date :Created in 2021/8/19 16:03
 * @description:第四章第二节 作业
 * @modified By:
 * @version: $
 */
public class Student {
    
    
    private String name;
    private Integer age;
    private Integer classNum;

    public String getName() {
    
    
        return name;
    }

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

    public Integer getAge() {
    
    
        return age;
    }

    public void setAge(Integer age) {
    
    
        this.age = age;
    }

    public Integer getClassNum() {
    
    
        return classNum;
    }

    public void setClassNum(Integer classNum) {
    
    
        this.classNum = classNum;
    }

    @Override
    public String toString() {
    
    
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", classNum=" + classNum +
                '}';
    }
}

写主程序

package pojo;

public class test2 {
    
    
    public static void main(String[] args) {
    
    
        test2(); //调用方法
    }

    public static void test2() {
    
    
        Student student = new Student();
        String s = "name=王五 age=18 classNum=1101";  //初始化字符串
        
        String[] arr = s.split(" ");  //字符串空格 分割
        for (String s1 : arr) {
    
    		
            String[] temp = s1.split("=");  //字符串 等号 分割
            if (temp[0].equals("name"))
                student.setName(temp[1]);   //name 王五
            else if (temp[0].equals("age"))
                student.setAge(Integer.valueOf(temp[1])); //age 18
            else if (temp[0].equals("classNum"))
                student.setClassNum(Integer.valueOf(temp[1])); //classNum 1101
        }//for
        System.out.println("学生信息" + student); //输出结果
    }
}

请添加图片描述

3. 字符串压缩:利用字符串重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串"aabccdd" 会变成 “a2b1c2d2”。若压缩后的字符串没有变短,则会返回原有字符串,你可以假设字符串中包含大小英文字母(a-z)

例如1 输入: aabcccccddddd

​ 输出:a2b1c5d5

例如2 输入:“abcdd”

​ 输出:“abcdd”

​ 解释:因为压缩后的字符串为:“a1b1c1d2”,长度大于原字符串

import java.util.Scanner;

/**
 * @author :@白嫖怪Ae
 * @date :Created in 2021/8/19 16:34
 * @description:压缩字符-字符串压缩:
 *  利用字符串重复出现的次数,编写一种方法,实现基本的字符串压缩功能。
 *  比如,字符串"aabccdd" 会变成 "a2b1c2d2"。
 *  若压缩后的字符串没有变短,则会返回原有字符串,你可以假设字符串中包含大小英文字母(a-z)
 * @modified By:
 * @version: $
 */
public class demo {
    
    
    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        System.out.println("请输入测试的字母");
        String string = input.nextLine();
        System.out.println(compress(string));
    }

    /**
     * @param  str 这是个字符串 aabbccdd
     *
     * */
    public static String compress(String str){
    
    
        //如果传入空字符
        if(str.length() == 0){
    
    
            return str;
        }
        //因为字符串来回变更,所以这里使用 StringBuffer
        StringBuffer newStr = new StringBuffer();
        char ch = str.charAt(0); //表示当前要压缩的字符
        int count = 1;//表示当前压缩字符的个数
        for (int i = 1;i < str.length();i++){
    
    
            if (ch == str.charAt(i)){
    
    
                count++;
            }else{
    
    
                newStr.append(ch);  //把第一个字母添加上
                newStr.append(count); //把count 加上
                ch = str.charAt(i);  //字母换到这个不一样的字母
                count = 1;      //重新计数
            }
        }
        newStr.append(ch);    //把最后的字母加上
        newStr.append(count);
        return newStr.length()>str.length()?str:newStr.toString(); //比大小,返回结果值
    }
}

请添加图片描述

4.写一个和trim功能相同的方法

trim() 方法用于删除字符串的头尾空白符。(trim方法: 去掉字符串前后的空格,中间是不管的)

思路

1.定义两个变量,用来存储两个角标

2.分别从头和尾遍历字符串,直到找到第一个不为空的字符

3.截取字符串

//主要是用两个 坐标来确定 位置,然后截取
/**
 * @author :@白嫖怪Ae
 * @date :Created in 2021/8/19 18:40
 * @description:编写类trim方法 思路
 * 1.定义两个变量,用来存储两个角标
 * 2.分别从头和尾遍历字符串,直到找到第一个不为空的字符
 * 3.截取字符串
 *
 * 涉及方法  str.charAt() 从字符串中提取字符
 *          str.subString 截取
 * @modified By:
 * @version: $
 */
public class MyTrim {
    
    
    public static void main(String[] args) {
    
    
        String s = myTrim("   aab cccccdd ddd  ");
        System.out.println(s);

    }

    public static String myTrim(String str) {
    
    
        //1.定义两个变量,用来存储两个角标
        int index1 = 0;     //标记 第一位
        int index2 = str.length() - 1; //标记 最后一位

        //2.分别从头和尾遍历字符串,直到找到第一个不为空的字符
        for (int i = 0; i < str.length(); i++) {
    
    
            if (str.charAt(i) != ' ') {
    
      //判断第一位不是空格的位置
                index1 = i;
                break;
            }
        }
        for (int i = str.length() - 1; i >= 0; i--) {
    
    
            if (str.charAt(i) != ' '){
    
     //判断倒数第一位不是空格的位置
                index2 = i;
                break;
            }
        }

        //3.截取字符串
        return str.substring(index1,index2+1);
    }
}

请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_43098690/article/details/119809454
今日推荐