Java字符串(三)

 【今日】

     道路对了,就不怕遥远

目录

一   格式化字符串

1.1时间和日期字符串格式化

【日期格式化】

​编辑【时间格式化】

 【格式化常见的日期时间组合】

 二  常规类型格式化

 三   使用正则表达式

四   字符串生成器

4.1StringBuffer类

【追加字符序列】append()方法

【插入字符串】insert()方法

 【删除子字符串】delete()方法

【修改指定索引处的字符】setCharAt()方法 

【字符串反序】  reverse()方法

 4.2StringBuider类


一   格式化字符串

 String类静态format()方法用于创建格式化的字符串。

【方法】:format(string format,Object...args)

      该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地的语言环境。语法如下:

str.format(String format,Object...args)

▣format:格式字符串。

▣args:格式字符串中由格式说明符引用的参数。

1.1时间和日期字符串格式化

【日期格式化】

	Date date=new Date();//创建Date对象date
	String s=String.format("%te",date);//通过format()方法对date进行格式化
	

这里%te是转换符,常用的日期格式化转换符如表:

 用以上转换符实现部分功能:

import java.util.Date;

public class Demo {

	public static void main(String[] args) {
		Date date=new Date();//创建Date对象date
		System.out.println(String.format("%tc",date));
		System.out.println("现在是一个月中的第"+String.format("%te",date)+"天");
		System.out.println("现在是"+String.format("%tb",date));
		System.out.println("现在是:"+String.format("%tA",date));
		System.out.println("现在是一年中的第"+String.format("%tj",date)+"天");
		
	}
}

【运行结果 】

【时间格式化】

使用format()方法不仅可以完成日期的格式化,也可以实现时间的格式化。格式时间的转换符如表:

  用以上转换符实现部分功能:

import java.util.Date;

public class Demo {

	public static void main(String[] args) {
		Date date=new Date();//创建Date对象date
		System.out.print("现在是:"+String.format("%tH",date)+"时");
		System.out.print(String.format("%tM",date)+"分");
		System.out.println(String.format("%tS",date)+"秒");
	}
}

【运行结果 】 

 【格式化常见的日期时间组合】

   用以上转换符实现功能:

import java.util.Date;

public class Demo {

	public static void main(String[] args) {
		Date date=new Date();//创建Date对象date
		System.out.println(String.format("%tF",date));
		System.out.println(String.format("%tD",date));
		System.out.println(String.format("%tc",date));
		System.out.println(String.format("%tr",date));
		System.out.println(String.format("%tT",date));
		System.out.println(String.format("%tR",date));
	}
}

 【运行结果 】 

 二  常规类型格式化

     常规类型格式化可应用于任何参数类型,转换符表如下:

   用以上转换符实现部分功能:

public class Demo {

	public static void main(String[] args) {
		System.out.println("2>3吗?:"+String.format("%B",2>3));
		System.out.println("526的散列码:"+String.format("%H",526));
		System.out.println("520的八进制为:"+String.format("%o",520));
		
	}
}

 【运行结果 】  

 三   使用正则表达式

      正则表达式通常被用于判断语句中,用来检查某一些字符串满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。正则表达式的元字符及其意义如表所示:

    在正则表达式中,可以使用方括号括起若干个字符来表示一个元字符,该字符可代表方括号中的的任何一个字符。例如:

     在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如,”A*“代表A可在字符串中出现0次或多次。限定修饰符的用法如表所示:

 【例题】验证E-mail地址是否合法。

 邮箱名:是可用于标识的字符;

服务器名称::是可用于标识的字符;

.[中间名]   :可有可无;

后缀:2-3位的字符;

\\w+@+\\w+(\\.\\w{2,3})*\\.\\w{2,3}

()内可有可无。

【完整代码】:

import java.util.Scanner;

public class Dome {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		String regex = "\\w+@\\w+(\\.\\W{2,3})*\\.\\w{2,3}";
		System.out.println("请输入的合法地址:");
		String str = sc.nextLine();
		if(str.matches(regex)) {
			System.out.println("输入的地址合法");
		}else {
			System.out.println("输入的地址不合法");
		}
	}

}

【运行结果】 

 【例题】验证字符串是不是大陆手机号

分析可得大陆手机号格式:

 【完整代码如下】

import java.util.Scanner;

public class text {

	public static void main(String[] args) {
		String regex = "(13[0-9]|15[012356789]|18[056789])\\d{8}";
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入电话号码:");
		String phone = sc.nextLine();
		if(phone.matches(regex)) {
			System.out.println("是大陆电话号码!");
		}else {
			System.out.println("不是大陆电话号码!");
		}

	}

}

 【运行结果】

四   字符串生成器

4.1StringBuffer类

    StringBuffer类是线程安全的可变字符序列,它是一个类似于String的字符串缓冲区,其实体容量会随着存放的字符串增加而自动增加。

【语法】

StringBuffer sbf = new StringBuffer();         

StringBuffer sbf = new StringBuffer("abc");

StringBuffer sbf = new StringBuffer(32);

 常用方法:


【追加字符序列】append()方法

该方法用于字符串生成器中追加内容。语法如下:

append(content)

▣content表示要追加到字符串生成器中的内容,可以是任何类型的数据或对象。

【插入字符串】insert()方法

该方法用于向字符串生成器中的指定位置插入数据内容。语法如下:

insert(int offset,arg)
▣offset 字符串生成器的位置。该参数必须大于等于0,小于等于此序列的长度。

▣arg  将插入字符串生成器的位置。

 【删除子字符串】delete()方法

移除此序列的字符串中的字符。该字符串从指定的start处开始,一直到索引end-1处的字符。如果不存在这种字符,则一直到序列尾部。语法如下:

delet(int start,int end)

▣start 将要删除字符串的起点

▣end 将要删除的字符串的终点位置。

【修改指定索引处的字符】setCharAt()方法 

语法如下:

etCharAt(int index, char ch);

▣index要修改的索引位置

▣ch  要修改的目标字符

【字符串反序】  reverse()方法

语法如下:

str.reverse();

 

 4.2StringBuider类

StringBuider类与StringBuffer类具有相同的API,所以两者的使用方法也相同。

【StringBuider与StringBuffer与String的关系】

 【StringBuider与StringBuffer与String的不同之处】

    String只能赋值一次,每一次改变内容都生成了一个新的对象,然后原有的对象引用了新的对象,所以说String本身是不可改变。每一次改变string的字符串内容,都会在内存创建新的对象,而每一次生成新对象都会对系统性能产生影响,这会降低Java虚拟机的工作效率。


 

  而StringBuffer和StringBuilder不同,每次操作都是对自身对象做操作,而不是生成新的对象,其所占空间会随着字符内容增加而扩充,做大量的修改操作时,不会因生成大量匿名对象而影响系统性能。


 

 根据表中内容,我还可以总结这些类的适用场景

(1)操作少、数据少,用string。
(2)单线程,操作多,数据多,用StringBuilder。

(3)多线程,操作多,数据多,用StringBuffer。

 【代码】

public class text {

	public static void main(String[] args) {
		StringBuffer sbf = new StringBuffer("古诗春晓");
		sbf=sbf.delete(0, 2);
		System.out.println(sbf.toString());
		sbf=sbf.insert(1,"眠不觉");
		System.out.println(sbf.toString());
		sbf=sbf.append(",处处闻啼鸟。");
		System.out.println(sbf.toString());

	}

}

【运行结果】

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值