目录
一、声明字符串
二、创建字符串
三、引用字符串常量来创建字符串变量
四、连接字符串
五、获取字符串信息
六、操作字符串
六、判断字符串的开始结尾
七、判断字符串是否相等(内存,内容是否一致,返回类型为boolean)
7.1、equalsIgnoreCase()
7.2、Equals()
九、按字典顺序比较两个字符串
9.1、compareTo();
9.2、CompareTo()方法只有在equals(Object)方法返回true时才返回
十、字符串的大小转换
十一、字符串分割
11.1、Split(String sign);
11.2、Split(String sign,int limit)
十二、格式化字符串
12.1、Format()创建格式化的字符串
12.2、format(Local l,String format,Object...args)
12.3、日期和时间字符串格式化
12.3.1、常用日期格式转换符
12.3.2、时间格式化
12.4、常规类型格式化
12.4.1、常规转换符
十三、使用正则表达式
13.1 正则表达式中的元字符
在Java语言中字符串必须包含在(双引号中)””(两种方式)
String a = “abcd”;
Stirng a = new string(“abcd”) 两者可视与等价String str = [null]
Str 标识符,字符串的变量名称
String 变量的类型
Null 如果省略,表示str未初始化,否则表示声明的字符串值等于null
声明String必须初始化才能使用,否则编译器会报错(变量未被初始化错误)
String类的常用构造方法(数组)
(1)String(char a[])
Char a[] = {“g”,“o”,“o”,“d”}
String s = new String(a)
等价于
String s = new String(“good”);
(2)String(char[]value)
该构造方法可分配一个新的String对象,使其表示字符数组中所有元素连接的结果
Char a[] ={“s”,“t”,“u”,“d”,“e”,“n”,“t”};
String s = new String(a);
等价于String s = new String(“student”);
(3)String(char a[] int offset,int length);
Char a[]={“s”,“t”,“u”,“d”,“e”,“n”,“t”};
String s = new String(a,2,4);
等价于
String s = new String(“uden”);
Offset表示开始截取字符串的位置
Length表示截取字符串的长度
String str1,str2;
str1 = “We are students”
str2 =”We are students”
Str1与str2引用相同的字符串常量具有相同的实体
(1)连接多个字符串
(2)多个字符串使用“+”连接字符串
(3)Java中一对双引号内的字符串不能分开两行
(4)连接其他数据类型
可以与基本类型数据进行连接,连接是基本数据类型直接转换为字符串类型
(1)获取字符串长度:str.length();
//将字符串str的长度输出
System.out.println("字符串str的长度:" + str.length());
(2)字符串查找:
(1)indexOf();搜索字符或字符串首次出现的索引位置
(2)lastIndexOf();搜索字符或字符串最后一次出现的索引位置
获取指定字符串索引位置
//将空字符串在str中的索引位置赋值给变量size
int size = str.lastIndexOf(" ");
//将变量输出
System.out.println("空字符在字符串str中的索引位置是:" + size)
获取指定位索引位置的字符
Str.charAt(int index)
String str = "helloworld";//定义str字符串
char mychar = str.charAt(5);//将字符串str中位置是5的字符串返回
(1)获取字符串:
(1)String的subString()方法对字符串进行截取
Str.substring( int beginIndex)
beginIndex:截取字符的索引开始位置
String str = "Hello world";
String substr = str.substring(3);
Substring(int beginIndex,int endIndex)
endIndex:截取字符索引的结束位置
String substr = str.substring(0,3)
(2)去除空格:trim()忽略前导空格,和尾部空格
Str.trim();
Str为任意字符串对象
String str = “java class”;
System.out.printin(“字符串原来的长度:” + str.length());
System.out.printin(“去掉空格后的长度” + str.trim().length());
(3)字符串替换:str.replace(char oldchar, char newchar);
String str = "address";
String newstr = str.replace("a","A");
System.out.println(newstr);
(1)startsWith();判断当前字符串的前缀是否是是参数指定的字符串
Str.startsWith(Stirng prefix);
Prefix:前缀的字符
(2)endsWith();判断当前字符串的后缀是否是是参数指定的字符串
Str.endsWith(String suffix);
Sufifix:后缀字符
String mun = “22045612”;
Boolean b = num1.startsWith(“22”);
String num1 ="22015614";
String num2 = "214021378";
boolean b =num1.startsWith("22");
boolean b2 = num1.endsWith("78");
boolean b3 = num2.startsWith("22");
boolean b4 = num2.endsWith("78");
System.out.println("字符串num1是以“22”开始的吗?" + b);
System.out.println("字符串num1是以“78”结束的吗" + b2);
System.out.println("字符串num2是以“22”开始的吗?" + b3);
System.out.println("字符串num2是以“78”结束的吗?" + b4);
字符串比较是忽略大小写
Str.equalsIgnoreCase(String otherstr)
Str,Otherstr:是参加比较的字符串对象
字符串比较是区分大小写
Str.equals(String otherstr)
String s1 = new String("abc");
String s2 = new String("ABC");
String s3 = new String("abc");
boolean b= s1.equals(s2);
//使用equals比较s1,s2
boolean b2 = s1.equalsIgnoreCase("s2");
//使用equalsIgnoreCase比较s1,s2
System.out.println(s1 + "equals" + s2 +":" + b);
System.out.println(s1 + "equalsIgnoreCase" + s2 + ":" + b2);
该比较基于字符串各个字符的Unicode值
Str.compare To(String otherstr)
Str,othestr 参加比较的两个字符串对象
String str2 = new String("a");
String str3 = new String("c");
System.out.println(str + "compareTo" + str2 + ":" + str.compareTo(str2));
//将str与str2的比较结果输出
System.out.println(str + "compareTo" + str3 + ":" +str.compareTo(str3));
//将str与str3的比较结果输出
(1)toLowerCase();
String newstr = str.toLowerCase();
//实现小写转换
(2)toUpperCase();
String newstr2 = str.toUpperCase();
//实现大写转换
Sign为分割字符串的分割符,也可是正则表达式
Limit:限制的分割次数
String str = new String("abc,def,ghi,gkl");
String[] newstr = str.split(",");
for(int i=0;i< newstr.length;i++){
System.out.println(newstr[i]);
}
String[] newstr2 = str.split(",",2);
for(int j=0;j
format(String format,Object...args);
Format 格式字符串
Args 格式字符串中由格式说明符引用的参数,如果还有格式说明符以外的参数,则忽略这些额外的参数,此参数的数目是可变的,可以为0
L :格式化过程中要应用的语言环境,如果1为null,则不进行本地化
Format:格式化字符串
Args:
转换符 |
说明 |
示列 |
%te |
一个月中的某一天(1--31) |
2 |
%tb |
指定语言环境的月份简称 |
Feb(二月) |
%tB |
指定语言环境的月份全称 |
February(二月) |
%tA |
指定语言环境的星期几全称 |
Monday(三月) |
%ta |
指定语言环境的星期几简称 |
Mon(三月) |
%tc |
包括全部日期的时间信息 |
星期二 三月 25 13:27:22 |
%tY |
4位年份 |
2008 |
%tj |
一年中的第几天 |
085 |
%tm |
月份 |
03 |
%td |
一个月中的第几天(01 -- 31) |
02 |
%ty |
2为年份 |
08 |
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 + "号");
时间格式转化符
转换符 |
说明 |
示例 |
%tH |
2位数字的24小时制的小时(00 -- 23) |
14 |
%tI |
2位数的12小时制的小时(01 -- 12) |
05 |
%tk |
2位数字的24小时制的小时(0 -- 23) |
5 |
%tl |
2位数字的12小时制的小时(1 --12) |
10 |
%tM |
2位数的分钟(00 -- 59) |
02 |
%tS |
2位数的秒数(00 --60) |
12 |
%tL |
3位数字的毫秒数(000 --999) |
920 |
%tN |
9位数的毫秒数 |
|
%tp |
指定语言环境下上午或下午的标记 |
PM(英文),上午(中文) |
%tz |
相对于GMT RFC 82 格式的数字区偏移量 |
+ 0800 |
%tZ |
时区缩写形式的字符串 |
CST |
%ts |
1970-01-01 00:00:00至现在的经过的秒数 |
|
%tQ |
1970-01-01 00:00:00至现在的经过的毫秒数 |
|
时间格式化 时间格式化
转换符 |
说明 |
示例 |
%tF |
“年-月-日”格式(四位年份) |
|
%tD |
“年/月/日”格式(两位年份) |
|
%tc |
全部日期和时间信息 |
星期二 三月 25 16:20:00 CST 2008 |
%tr |
“时:分:秒:PM(AM)”格式(12时制) |
03:33:15 下午 |
%tT |
“时:分:秒:”格式(24时制) |
15:13:50 |
%tR |
“时:分”格式(24时制) |
15:12 |
转换符 |
说明 |
示例 |
%b %B |
结果被格式化为布尔型 |
True |
%h %H |
结果被格式化为散列码 |
A05A5198 |
%s %S |
结果被格式为字符串类型 |
“abcd” |
%c %C |
结果被转为字符类型 |
‘a’ |
%d |
结果被格式化为十进制 |
|
%o |
结果被格式化为八进制 |
|
%x %X |
结果被格式化为十六进制 |
|
%e |
|
|
|
|
|
|
|
|
元字符 |
正则表达式中的元字符写法 |
意义 |
\d |
\\d |
代表任意一个字符 |
\D |
//D |
代表0 --9的任何一个数字 |
\s |
\\s |
代表空白字符,“\t”,”\n” |
\S |
\\S |
代表非空白字符 |
\w |
\\w |
代表可用作标识符的字符,但不包括“$” |
\W |
\\W |
代表不可用作表示符的字符 |
\p{Lower} |
\\p{Lower} |
代表任何小写字母a --z |
\P{Upper} |
\\p{Upper} |
代表大写字母A --Z |
\p{ASCII} |
\\p{ASCII} |
ASCII字符 |
\{Alpha} |
\\p{Alpha} |
字符字母 |
\p{Digit} |
\\p{Digit} |
十进制数字,即0 --9 |
\p{Alnum} |
\\p{Alnum} |
数字或字母字符 |
\p{Punct} |
\\p{Punct} |
表点符号 |
\p{Graph} |
\\p{Graph} |
可见字符:[\p{Alnum}\p{Punct}] |
\p{Print} |
\\p{Print} |
可打印字符:[\p{Graph}\x20] |
\p{Blank} |
\\p{Blanck} |
空格或制表符:[\t] |
\p{cntrl} |
\\{cntrl} |
控制字符:[\x00-\xlF\x7F] |
使用正则表达式必须要使用转意字符(\),否则代表的是普通意思
元字符:正则表达式中可以用[](中括号)括起若个字符来表示,该元字符可以代表方括号中任意一个元字符
正则表达式中允许使用限定修饰符来限定元字符出现的次数 限定修饰符
限定修饰符 |
意义 |
实例 |
? |
0次或1次 |
A? |
* |
0次或多次 |
A* |
+ |
一次或多次 |
A+ |
{n} |
正好出现n次 |
A{2} |
{n,} |
至少出现n次 |
A{3,} |
{n,m} |
出现n到m次 |
A{2,6} |
Matches():检测匹配的字符串是否满足给定的字符串;调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同Pattern.matches(regex,str )
Regex:匹配字符串的正则表达式
if(str1.matches(regex)){
//判断字符串变量是否与正则表达式匹配
System.out.println(str1 + "是一个合法的E_mail地址格式" );
}
字符串生成器
成功创建的字符串,其长度是固定的,内容是不能被改变的和编译的。
(1)SringBuilder() 初始容量16个字符,可指定字符长度,能根据附加的字符自动增长容量(当附加的字符长度超过16个字符)
toString()可动态的执行添加,删除,插入等编辑操作
Int,char,boolean,String,double,通过该方法的多个重载形式,可实现接受任何类型的数据
append(content); 向字符串生成器中追加内容
Insert(int offset arg);向字符串生成器中的指定位置插入数据
Delete(int start,int end);移除此序列的子字符串中的字符,该子字符串从指定的start处开始,一直到索引end -1处的字符,如果不存在这样的字符,则一直到序列的尾部,如果start等于end,则不发生任何改变
快捷键
新建:shift + alt + N
关闭当前编辑框:ctrl + w
关闭所有编辑框:ctrl + shift + w
查找/替换:ctrl +F