Java中的字符串

1、创建字符串

String()
String(char a[])
String(char a[],int offset,int length)

2、字符串操作

1、字符串连接

使用“+“和使用String类的concat()方法,通常使用”+“而不会调用方法
语法为
public String concat(String str)

2、获取字符串信息

1、获取字符串长度

String类的length()方法和数组的length属性根本上就不同
是不一样的

System.out.println(str.length());

2、获取指定字符的索引位置

使用String类的indexOf()和lastIndexOf()方法,indexOf()返回第一个,lastIndexOf()返回最后一个,区分大小写

str.indexOf("s")
str.lastIndexOf("s")

3、指定索引位置的字符

使用String类的charAt()方法

str.charAt("s")

3、字符串比较

1、比较全部内容
String类中的equals()方法用来比较两个字符串是否完全相同
equalsIgnoreCase()方法在忽略大小写时比较两个字符串是否完全相同

public class StringEquals {
 public static void main(String[] args) {
  String str1="China";
  String str2="China ";
  String str3="china";
  System.out.println(str1+" 比较  "+ str2+": "+str1.equals(str2));
  System.out.println(str1+" 在忽略大小写时比较  "+ str3+": "+str1.equalsIgnoreCase(str3));
 }
}

运行结果
在这里插入图片描述
2、比较开头结尾
String类中的startsWith()方法用来判断是否以给定字符串开头endsWith()方法用来判断是否以给定字符串结尾,有前缀和后缀

str.startsWith("s")
str.endsWith("s")

4、字符串替换

String类中的replace()方法替换字符串中指定字符串为另一字符串

public class StringReplace {
 public static void main(String[] args) {
  String str="So are We";
  System.out.println("替换前的字符串为:"+str);
  String replacestr = str.replace("We", "You");
  System.out.println("替换后的字符串为:"+replacestr);
 }
}

运行结果
在这里插入图片描述

5、字符串分割

String类中的split()方法用来分割字符串,可以输出字符串中的单词个数

public class StringSplit {
 public static void main(String[] args) {
  String str="So are We";
  String[] splitStr = str.split(" ");
  System.out.println(str+"中共有"+splitStr.length+"个单词!");
 }
}

运行结果
在这里插入图片描述

6、大小写转换

String类的toUpperCase()和toLowerCase()方法将字符串转换为全部大写和全部小写

public class StringCase {
 public static void main(String[] args) {
  String str = "So am I!";
  System.out.println(str);
  System.out.println("转换为大写形式:"+str.toUpperCase());
  System.out.println("转换为小写形式:"+str.toLowerCase());
 }
}

运行结果
在这里插入图片描述

7、去除首末空格

String类的trim()方法可以用来去除字符串首末空格

public class StringTrim {
 public static void main(String[] args) {
  String str="  So say we all!  ";
  System.out.println("字符串长度:"+str.length());
  System.out.println("去除首末空格后字符串长度:"+str.trim().length());
 }
}

运行结果
在这里插入图片描述

3、格式化字符串

String类的format()方法
1、日期格式化
%te 一个月中的某一天(1~31)
%tb 月份简称
%tB 月份全称
%tA 星期几全称
%ta 星期几简称
%tc 全部日期和时间信息
%tY 4位年份
%tj 一年中的第几天(001~366) 085
%tm 月份 03
%td 一个月中的第几天(01~31) 02
%ty 2位年份 07

package com.pcx;
import java.util.GregorianCalendar;
public class DateFormat {
 public static void main(String[] args) {
  GregorianCalendar calendar = new GregorianCalendar(); //创建日期对象
  String str = String.format("小明的生日:%1$tY年%1$tm月%1$te日",calendar);
  System.out.println(str);
 }
}

运行结果
在这里插入图片描述
2、时间格式化
%tH %tI %tk %tl %tM %tS %tL %tN %tp %tz %tZ %ts %tQ

3、日期时间组合格式化
%tF %tD %tc %tr %tT %tR

4、常规类型格式化
%s 字符串类型 “mingrisoft”
%c、%C 字符类型 ‘m’
%b、%B 布尔类型 true
%d 整数类型 十进制 99
%x、%H 整数类型 十六进制 FF
%o 整数类型 八进制)77
%f 浮点类型 99.99
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的)
%h、%H 散列码
%% 百分比类型 %
%n 换行符
%tx 日期与时间类型(x代表不同的日期与时间转换符)

4、正则表达式

1、判断是否符合正则表达式的方法

String类的matches()方法

2、正则表达式的元字符

三 :{} [] ()
{}:表示{}前面的一个或一组字符串连续出现的次数.
{m}:表示{}前面的一个或一组字符串连续出现m次.
{m,}:表示{}前面的一个或一组字符串连续出现至少m次. m ~ 无限.
{m,n}:表示{}前面的一个或一组字符串连续出现至少m次,最多n次 m~n
[]:表示范围 中文范围[\u4e00-\u9fa5]
():表示组
三: * + ?
限制符号前面的一个或一组字符串连续出现的次数
*表示前面的一个或一组字符串连续出现至少0次,最多无限次 相当于{0,}
+表示+前面的一个或一组字符串连续出现至少1次,最多无限次 相当于{1,}
? : 表示?前面的一个或一组字符串连续出现至少0次,最多1次 相当于{0,1}
二 : ^ $
^ : 1.如果放在正则表达式的开头部分,表示定头(断头),限制字符串的开头字符.
2.如果放在[]的开头部分,表示取反 相当于!
$ : 表示定尾(断尾),限制字符的结束字符
三个一: . | \
. : 表示模糊匹配任意一个字符
| : 表示或者
\ : 转义符
\s : 表示空白符
\S : 表示非空白符
\d : 表示数字 相当于[0-9]
\D : 表示非数字 相当于非[^0-9]
\w : 表示数字 字母 下划线 相当于[a-zA-Z0-9]
\W : 表示非数字 字母 下划线 相当于[^a-zA-Z0-9]
\b : 表示单词边界

3、限定符

在这里插入图片描述

补例:判断邮箱地址是否合法

public class EmailVaLidation {
 public static void main(String[] args) {
  String str = "(\\w\\.)*\\w+@(\\w+\\.)+[A-Za-z]+"; //定义电子邮件正则表达式
  String email = "123@qq.com";
  boolean match = email.matches(str);
  System.out.println(email+"\n是合法邮箱地址:"+match); 
 }
}

运行结果
在这里插入图片描述

4、元字符的含义

在这里插入图片描述

5、可变字符串

解决大量操作字符串的问题,比如修改字符串内容
使用StringBuilder类来创建字符串

StringBuilder str = new StringBuilder(); //创建StringBuilder类的对象

补例:统计汉字个数

都是用了比较的方法

public class Count汉字 {
 public static void main(String[] args) {
  String str = "中国 China";
  String regex = "^[\u4e00-\u9fff]$"; //定义使用的正则表达式
  int t=0; //记录汉字个数
  for(int i=0;i<str.length();i++) {
   if((""+str.charAt(i)).matches(regex)) {
    t++;
   }
  }
  System.out.println(str+"中包含"+t+"个汉字");
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值