Java基础学习——字符串(5、格式化字符串;6、使用正则表达式;7、字符串生成器)

5、格式化字符串

String类的静态format()方法用于创建格式化字符串。format()方法有两种重载形式。

  1. format(String format,Object···args)
    该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。
    语法如下:
    str.format(String format,Object···args)
    format:格式字符串。
    args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0.
  2. format(Local l,String format,Object···args)
    l:格式化过程中要应用的语言环境。如果l为null,则不进行本地化。
    format:格式字符串。
    args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0.

1、日期和时间字符串格式化

  1. 日期格式化
    常用的日期格式化转换符:
    在这里插入图片描述
  2. 时间格式化
    使用format()方法不仅可以完成日期格式化,也可以完成时间的格式化。时间格式化转换符要比日期转换符更多、更精确,它可以将时间格式化为时、分、秒、毫秒。
    时间格式化转换符:
    在这里插入图片描述
  3. 格式化常见的日期时间组合
    常见的日期和时间组合的格式:
    在这里插入图片描述

代码演示:

package com.company;
import java.util.Date;
public class day7 {
    public static void main (String[] args){
        System.out.println("1.---------------------------");
        Date date = new Date();
        String year = String.format("%tY",date);
        String month = String.format("%tB",date);
        String day = String.format("%td",date);
        System.out.println("今年是:"+year+"年");
        System.out.println("现在是:"+month);
        System.out.println("今天是:"+day+"号");
        System.out.println("2.---------------------------");
        String hour = String.format("%tH",date);
        String minute = String.format("%tM",date);
        String second = String.format("%tS",date);
        System.out.println("现在是:"+hour+"时"+minute+"分"+second+"秒");
        System.out.println("3.---------------------------");
        String time = String.format("%tc",date);
        String form = String.format("%tF",date);
        System.out.println("全部时间信息是:"+time);
        System.out.println("年-月-日格式:"+form);
    }
}

结果:
在这里插入图片描述

2、常规类型格式化
常规转换符:
在这里插入图片描述
代码演示:

package com.company;

public class day71 {
    public static void main(String[] args){
        String str = String.format("%d",400/2);
        String str2 = String.format("%b",3>5);
        String str3 = String.format("%x",200);
        System.out.println("400的一半是:"+str);
        System.out.println("3>5正确吗?"+str2);
        System.out.println("200的十六进制数是:"+str3);
    }
}

结果:
在这里插入图片描述

6、使用正则表达式

正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义的字符串,这些特殊字符称为正则表达式的元字符。
正则表达式中的元字符:
在这里插入图片描述
在正则表达式中可以使用方括号括起若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。
例如:
[^456]:代表4、5、6之外的任何字符。
[a-r]:代表a-r中的任何一个字母。
[a-zA-Z]:代表任意一个英文字母。
[a-e[g-z]]:代表a-e或g-z中的任何一个字母(并运算)。
[a-0&&[def]]:代表字母d、e、f(交运算)。
[a-d&&[^bc]]:代表字母a、d(差运算)。

在正则表达式中可以使用限定修饰符来限定元字符出现的次数。
限定修饰符:
在这里插入图片描述
使用正则表达式判断一个邮箱地址是否合法:
代码演示:

package com.company;

public class day72 {
    public static void main(String[] args){
        String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
        String str1 = "aaa@";
        String str2 = "aaaaa";
        String str3 = "11@11ffyu.dfg.com";
        if(str1.matches(regex)){
            System.out.println(str1+"是一个合法的邮箱地址格式");
        }
        if(str2.matches(regex)){
            System.out.println(str2+"是一个合法的邮箱地址格式");
        }
        if(str3.matches(regex)){
            System.out.println(str3+"是一个合法的邮箱地址格式");
        }
    }
}

结果:
在这里插入图片描述

字符串生成器

创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大的增加系统开销。而J2SE5.0新增了可变的字符序列String-Builder类,大大提高了频繁增加字符串的效率。
实例:
代码演示:

package com.company;

public class day73 {
    public static void main(String[] args){
        String str = "";
        long starTime = System.currentTimeMillis();
        for(int i = 0;i < 90;i++){
            str = str + i;
        }
        long endTime = System.currentTimeMillis();
        long time = endTime - starTime;
        System.out.println(str);
        System.out.println("String 消耗时间:"+ time);
        StringBuilder builder = new StringBuilder("");
        starTime = System.currentTimeMillis();
        for(int j = 0;j < 90;j++){
            builder.append(j);
        }
        endTime = System.currentTimeMillis();
        time = endTime - starTime;
        System.out.println(builder);
        System.out.println("StringBuilder 消耗时间:"+ time);

    }
}

结果:
在这里插入图片描述
通过这一实例可以看出,两种操作执行的时间差距很大。如果在程序中频繁的附加字符串,建议使用StringBuilder。新创建的StringBuilder对象初始容量是16个字符,可以自行指定初始长度。如果附加的字符超过可容纳的长度,则StringBuilder对象将自动增加长度以容纳被附加的字符。若要使用StringBuilder最后输出字符串结果,可以使用toString()方法。
利用StringBuilder类中的方法可动态的执行添加、删除和插入等字符串的编辑操作。该类方法如下:

  1. append()方法
    该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器等。
    语法如下:
    str.append(content)
    content:表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象。
  2. insert(int offset,arg)方法
    该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、boolean、char等基本数据类型或其他对象。
    语法如下:
    str.insert(int offset ,arg)
    offset:字符串生成器的位置。该参数必须大与等于0,且小于等于此序列的长度。
    args:将插入至字符串生成器的内容。该参数可以是任何数据类型或其他对象。
  3. delete(int start, int end)方法
    移除此序列的子字符串中的字符。该子字符串从指定的start处开始,一直到索引end-1处的字符,如果不存在这种字符,则一直到序列尾部。如果start等于end,则不发生任何更改。
    语法如下:
    str.delete(int start,int end)
    start:将要删除的字符串起点的位置。
    end:将要删除的字符串的终点位置。

代码演示:

package com.company;

public class day74 {
    public static void main(String[] args){
        StringBuilder str = new StringBuilder("");
        str.append("20210309");
        System.out.println("1.-----append:"+str.toString());
        str.insert(4,"年");
        str.insert(7,"月");
        str.append("日");
        System.out.println("2.-----insert:"+str.toString());
        str.delete(5,6);
        str.delete(7,8);
        System.out.println("3.-----delete:"+str.toString());
    }
}

结果:
在这里插入图片描述

欢迎参考学习,有错请指证,喜欢的请关注本人博客,不定期更新学习心得,学习笔记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值