模拟实现字符串的基本操作

字符串比较

1.比较两个字符串是否相等(区分大小写的比较)

(1)自己实现的版本

public class MyString {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = "HelloWorlds";
        System.out.println(isEqueals(str1 , str2));
    }
    public static boolean isEqueals(String str1 , String str2){
        char[] arr1 = str1.toCharArray();//将字符串转为字符数组
        char[] arr2 = str2.toCharArray();
        //字符串长度相等时,进入循环,比较对应字符是否相等
        while(arr1.length == arr2.length){
            for(int i = 0; i < arr1.length;i++){
                //在循环内的对应字符有不相等的直接返回false
                if(arr1[i] != arr2[i]){
                    return false;
                }
            }
            //长度相等时,对应字符没有不同的,则说明字符串是相等的,返回true
         return true;
        } 
        //字符串长度不相等时,跳出循环,并返回false
        return  false;
    }
}2)String类自带*equals()*

```java
public class MyString {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = "helloWorld";
        System.out.println(str1.equals(str2));
    }
}

运行结果:
在这里插入图片描述
不区分大小写的比较

public class MyString {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = "helloWorld";
        System.out.println(str1.equalsIgnoreCase(str2));
    }

在这里插入图片描述

2.比较两个字符串的大小

(1)自己实现的版本

 public static int myCompareTo(String str1 , String str2){
          if(str1 == null || str2 == null){//参数校验
            return -100; //有一个字符串为空时,则返回错误码-100
        }
        char[] arr1 = str1.toCharArray();
        char[] arr2 = str2.toCharArray();
        for(int i = 0; i < arr1.length && i <arr2.length;i++){

            if(arr1[i] < arr2[i]){
                return -1;
            } else if(arr1[i] > arr2[i]){
                return 1;
            }
            else return 0;
        }
        return 0;
    }

测试:

 public static void main(String[] args) {
        String str1 = "helloWorld";
        String str2 = "HelloWorld";
        System.out.println(myCompareTo(str1 , str2));
    }

在这里插入图片描述

 public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = "HelloWorld";
        System.out.println(myCompareTo(str1 , str2));
    }

在这里插入图片描述

 public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = "helloWorld";
        System.out.println(myCompareTo(str1 , str2));
    }

在这里插入图片描述

 public static void main(String[] args) {
        String str1 = null;
        String str2 = "helloWorld";
        System.out.println(myCompareTo(str1 , str2));
    }

在这里插入图片描述
(2)String类自带版本compareTo()

public static void main(String[] args) {
        String str1 = null;
        String str2 = "helloWorld";
        System.out.println(str1.compareTo(str2));
    }

在这里插入图片描述
上面自己实现的字符串比较大小遇到空字符串返回-100,而在String类自带的compareTo()方法中,遇到空字符串直接抛出异常。

public static void main(String[] args) {
        String str1 = null;
        String str2 = "helloWorld";
        System.out.println("A".compareTo("a"));
    }

在这里插入图片描述

3.toCharArray()

将字符串转为字符数组
在以上两个方法中,皆有对toCharArray()的使用。

字符串查找

4.判断一个子字符串是否存在

contains() 存在返回true,不存在返回false

public static void main(String[] args) {

        String str1 = "this is a simple love long";
        String str2 = "love";
        String str3 = "world";
        System.out.println(str1.contains(str2));
        System.out.println(str1.contains(str3));
        }

在这里插入图片描述
indexOf(String str,int fromIndex) 存在返回该子字符串的首元素的索引,不存在返回-1
第一个参数为子字符串,第二个参数为开始检索的位置

public static void main(String[] args) {

        String str1 = "this is a simple love song";
        String str2 = "love";
        String str3 = "world";
        System.out.println(str1.indexOf(str2));
        System.out.println(str1.indexOf(str3));
        }

在这里插入图片描述

public static void main(String[] args) {

        String str1 = "this is a simple love song";
        String str2 = "love";
        String str3 = "world";
        System.out.println(str1.indexOf(str2,7));
        System.out.println(str1.indexOf(str2,20));
        }

在这里插入图片描述

字符串替换

replace(char oldChar,char newChar)

  public static void main(String[] args) {

        String str1 = "this is a simple love song";
        System.out.println(str1.replace(" ","--"));

在这里插入图片描述
replaceAll(String regex,String replacement) 将regex全部替换掉

        String str2 = "ccaccbeatifulccworld";
        System.out.println(str2.replaceAll("c"," "));

在这里插入图片描述
replaceFirst(String regex,String replacement) 只替换掉第一个出现的regex

        String str2 = "ccaccbeatifulccworld";
        System.out.println(str2.replaceFirst("c"," "));

字符串拆分

split(String regex) regex正则表达式 在这里可以理解为,按照哪个字符进行拆分

 String str4 = "name=Lily&age=18" ;
        String[] rel = str4.split("&");
       for(int i = 0;i < rel.length;i++){
           String[] temp = rel[i].split("=");
           System.out.println(temp[0] + ":" + temp[1]);
    }

在这里插入图片描述
split(String regex,int limit) 第二个参数表示,将字符串最多拆分为几部分

  String str1 = "this is a simple love song";
        String[] rel =  str1.split(" ",3);
        for(String x:rel){
            System.out.println(x);
        }

在这里插入图片描述

字符串截取

substring(int begainIndex) 从指定的位置开始截取至最后一个元素

String str1 = "this is a simple love song";
        System.out.println(str1.substring(22));

在这里插入图片描述
substring(int begainIndex,int endIndex) 截取指定区间的字符串(前闭后开区间)

String str1 = "this is a simple love song";
      //  System.out.println(str1.substring(22));
        System.out.println(str1.substring(10,16));

在这里插入图片描述

字符串的其它操作

1.trim() 删除掉字符串两端的空格

  String str1 = "  this is a simple love song  ";
        System.out.print("[" + str1 + "]");
        System.out.println();
        System.out.println("[" + str1.trim() + "]");

在这里插入图片描述
*2.isEmpty()*判断字符串是否为空字符串

String str2 = "";
        System.out.println(str2.isEmpty());
        String str3 = " ";
        System.out.println(str3.isEmpty());
        String str4 = null;
        System.out.println(str4.isEmpty());

在这里插入图片描述
可以看出,当字符串为null是,会抛出异常

*l3.length()*求字符串的长度 ps: 字符数组求长度的表达式为str.length(这里的length指属性),而字符串长度的表达式是调用一个方法length()

String str1 = "  this is a simple love song  ";
        System.out.println(str1.length());

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值