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);
}
}