获取字符串长度
字符串名字.length(),返回该字符串的实际长度,包括空格
字符串查找indexOf()、lastIndexOf();
indexOf()返回的是搜索的字符或字符串首次出现的位置。
String s = "hello world";
int k = s.indexOf("w");//此时k的值是6;
lastIndexOf()返回的是搜索的字符或字符串首次出现的位置。
String s = "hello world";
int k = s.lastIndexOf('o');//此时k的值是7;
需要注意的是,当lastIndexOf()中参数是空字符串的时候返回的是字符串的长度;即s.lastIndexOf("") == s.length;(数值上相等)。
如果都没有找到所要检索的字符/字符串返回值都是-1。
获取指定索引位置的字符
charAt() --> 将指定索引处的字符返回
String s = "hello world";
char k = s.charAt(6);//此时k的值为‘w’;
获取子字符串
substring(0) --> 从字符串下边为0开始截取直到该字符结尾的子串
substring(6) --> 从字符串下边为6开始截取直到该字符结尾的子串(截取字符包括索引位置的字符)
substring(6,9) --> 从字符串下边为6开始截取直到字符串下标为9的子串(截取字符包括索引位置的字符)
去除空格
trim() --> 返回字符串的副本 --> 即忽略前导空格和尾部空格的原字符串
String s = " hello world ";//输出结果为“ hello world ”
String k = s.trim();//输出结果为“hello world”
字符串的替换
replace() --> 实现将指定的字符或字符串替换成新的字符或字符串
String s = "hello world";//输出结果为“hello world”
String k = s.replace("h","H");//输出结果为“Hello world”
String s = "hello world";//输出结果为“hello world”
String k = s.replace("hello","HELLO");//输出结果为“HELLO world”
如果要替换的字符或者字符串在原字符串中出现多次,那么都会被替换掉。
判断字符串的开始与结尾
String s = "hello hello world";
boolean k = s.startsWith("w");//判断是否以‘w’开头
boolean kk = s.endsWith("d");//判断是否以‘d’结尾
判断字符串是否相等
在这里说明java中的字符串比较不能直接用 == 来比较,因为由于内存的地址不同,即使两个字符串的内容完全相同,如果用 == 来比较,结果都会是false
equals() --> 区分大小写的比较
equalsIgnoreCase() --> 不区分大小写
String s = "abc";
String ss = "ABC";
boolean k = s.equals(ss);//在区分大小写的情况下比较s和ss是否相等,结果为false
boolean kk = s.equalsIgnoreCase(ss);//在不区分大小写的情况下比较s和ss是否相等,结果为true
这里注意,首先要满足的是字符串的长度相同,如果长度不同,那么比较结果都是false
按字典序比较两个字符串
compareTo() --> 比较两个字符串的字典序大小
比较分为两种情况
一、两个字符串长度不相等的情况下,如果用字符串长度作为比较对象,且从左到右比较一直相同,返回结果是字符串长度长的字符的长度 - 字符串长度短的字符的长度,反之返回结果同上,但要加一个负号
String s = "abaa";
String ss = "ab";
int k = s.compareTo(ss);//k的值为2 即4-2=2;
String s = "abaa";
String ss = "abaabb";
int k = s.compareTo(ss);//k的值为-2 即6-4=2;
二,当结果为-1,1,0的情况
String s = "abaa";
String ss = "ba";
int k = s.compareTo(ss);//k的值为-1;即ss的字典序比s的大
String s = "bbaa";
String ss = "aabb";
int k = s.compareTo(ss);//k的值为1;即ss的字典序比s的小
String s = "bbaa";
String ss = "bbaa";
int k = s.compareTo(ss);//k的值为0;即ss的字典序和s相同
字母的大小写转化
在java中,除了ASCII码的转化,还可以通过toLowerCase()-->将字符串转化成小写,toUpperCase()-->将字符串转化成大写,来实现大小写的转化,但是这两个方法是将字符串里的全部字符进行转化的(注意,数字或者非字符不受到转化的影响)
字符串分割
split()
String s = "192.168.0.1";
String[] f = s.split("\\.");//按照‘.’进行分割,并将分割的字符串存进字符串数组里
String[] e = s.split("\\.",2);//按照‘.’进行分割,只分割2-1次 并将分割的字符串存进字符串数组里
![](https://img2023.cnblogs.com/blog/3074711/202302/3074711-20230215161222189-1065879772.png)
格式化字符串
日期的格式化
常用的日期格式化转化符
%te --> 一个月中的某一天
%tb --> 指定语言环境的月份简称
%tB --> 指定语言环境的月份全称
%ta --> 指定语言环境的星期几全称
%tA --> 指定语言环境的星期几简称
%tc --> 包括全部日期和时间信息
%tY --> 四位数年份
%tj --> 一年中的第几天(001~366)
%tm --> 月份
%td --> 一个月的第几天(01~31)
%ty --> 二位数年份
Date date = new Date();//创建Date 对象date获取现在的时间
String year = String.format("%tY",date);
String month = String.format("%tB",date);
String day = String.format("%td",date);
System.out.printf("如今是:"+year+"年" + month + day + "号");
//输出结果为”如今是:2023年二月15号“
常用的时间格式化转换符
%tH --> 2位数字的24时制的小时(00~23)
%tI --> 2位数字的12时制的小时(01~12)
%tk --> 2位数字的24时制的小时(0~23)
%tl --> 2位数字的12时制的小时(1~12)
%tM --> 2位数字的分钟(00~59)
%tS --> 2位数字的秒数(00~60)
%tY --> 2位数字的分钟(00~59)
%tL --> 3位数字的毫秒数(000~999)
%tp --> 指定语言环境下上午或下午标记
%tz --> 相对于GMT RFC 82 格式的数字时区偏移量
%tZ --> 时区缩写形式的字符串
%ts --> 1970-01-01 00:00:00至现在经过的秒数
%tQ --> 1970-01-01 00:00:00至现在经过的毫秒数
常用的日期和时间组合的格式
%tF --> “年-月-日”格式(四位年份)
%tD --> “年/月/日”格式(二位年份)
%tc --> 全部日期和时间信息
%tr --> “时:分:秒 PM(AM)”格式(12时制)
%tT --> “时:分:秒”格式(24时制)
%tR --> “时:分”格式(24时制)