Java学习随笔——字符串(二)

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

2.日期和时间字符串格式化
(1)日期的格式化
format()方法通过给定的 特殊转换符作为参数来实现对日期和时间的格式化。

反回一个月的天数

Data data=new Data();
String s=String.format("%te",data);

在这里插入图片描述
应用实例

import java.util.Data;
public class Eval{
	public static void main(String[] args){
		Data data=new Data();
		String year=Strinng.format("%tY",data);
		String month=String.format("%tB",data);
		String day=String.format("%td",data);
		System.out.println("今年是:"+year+"年");
		System.out.println("现在是:"=month);
		System.out.println("今天是:"+day+"号");
	}
}

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

import java.util.Data;
public class GetData{
	public static void main(String[] args){
		Data data=new Data();
		String hour=String.format("%tH",data);
		Stribg minute=String.format("%tM",data);
		String second=String.format("%tS",data);
		System.out.println("现在是:"+hour+"时"+minute+"分"
		+second+"秒");
	}
}

(3)格式化常见的日期时间组合
格式化日期与时间的转换符定义了各种日期时间组合的格式,其中最常用的日 期和时间的组合格式。
在这里插入图片描述

import java.util.Data;
public class DataAndTime{
	public static void main(String[] args){
		Data data=new Data();
		String time=String.format("%tc",data);
		String form=String.format("%tF",data);
		System.out.println("全部的时间信息:"+time);
		System.out.println("年-月-日格式:"+form);
	}
}

(4)常规类型格式化
常规类型的格式化可应用于任何参数类型
在这里插入图片描述

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

3.使用正则表达式
正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式.。正则表达式是含有特殊意义的字符串,这些特殊字符称为正则表达式的元字符。
元字符表 在这里插入图片描述
在正则表达式中“.”代表任何一个字符,因此在正则表达式中如果想使用普通 意义的点字符“.”,必须使用转义字符“\”。

在正则表达式中可以使用方括号括起若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。例如,reg = “[abc]4”,这样字符串a4、b4、 c4都是和正则表达式匹配的字符串。

在正则表达式中允许使用限定修饰符来限定元字符出现的次数。
“A*”代表A可在字符串中出现0次或多次。
限定修饰符
在这里插入图片描述

public class Judge{
	public static void main(String[] args){
		String regex="\\w+@\\w+(\\.\\w{2,3})*\\.w{2,3}}";
		String str="aaa@";
		Striing str2="aaaaa";
		String str3="1111@111ffyu.dfg.com";
		if(str1.match(regex)){
			System.out.println(str1+"是合法的Email地址格式");
		}
		if(str2.match(regex)){
			System.out.println(str2+"是合法的Email地址格式");
		}
		if(str3.match(regex)){
			System.out.println(str3+"是合法的Email地址格式");
		}
	}
}

4.字符串生成器
创建成功的字符串对象,其长度是固定的,内容不能被改变和编译
使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实 例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。

验证字符串操 作和字符串生成器操作的效率的实例

public class Jerque{
	public static void main(String[] args){
		String="";//创建空字符串
		//定义对字符串执行操作的起始时间
		long starTime=System.currentTiimeMillis();
		for(int i=0;i<10000;i++){
			str=str+i;//循环追加字符
		}
		//定义对字符串操作偶的时间
		long endTime=System.currentMillis();
		long time=endTime-starTime;
		System.out.println("String 消耗时间:"+time);
		//创建字符串生成器
		StringBuilider builder=new StringBuilder("");
		//定义执行前操作的时间
		starTime=System.currentTimeMillis();
		for(int j;j<10000;j++){
			builder.appenend(j);
		}
		endTime=System.currentMillis();
		time=endTime-starTime;//追加操作执行的时间
		System.out.println("StringBuilder消耗的时间:"
		+time);
	}
}

StringBuilder类中的方法可动态地执行添加、删除和插入等字符串的编辑操作。 该类的常用方法如下。
(1)append()方法 该方法用于向字符串生成器中追加内容。
通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符 串生成器等。
语法:append(content)
其中,content表示要追加到字符串生成器中的内容,可以是任何类型的数据 或者其他对象。

(2)insert(int offset, arg)方法 该方法用于向字符串生成器中的指定位置插入数据内容。
通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、char和boolean等基本数据类型或其他对象。
语法:insert(int offset arg) offset:
字符串生成器的位置。该参数必须大于等于0,且小于等于此序列 的长度。
arg:将插入至字符串生成器的位置。该参数可以是任何的数据类型或其它对象

StringBuilder bf=new StringBuilder("hello");
bf.insert(5,"world");
System.out.println(bf.toString());//输出是helloworld

(3)delete(int start , int end)方法移除此序列的子字符串中的字符。
该子字符串从指定的start处开始,一直到索引end -1处的字符,如果不存在这种字符,则一直到序列尾部。如果start等于 end,则不发生任何更改。

StringBuilder bf=new StringBuilder("StringBuiler");
bf.delete(5,10);
System.out.println(bf.toString());//输出为Strinder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值