【JavaSE】String类常用字符串方法总结
目录
1. length() 求字符串长度
2. isEmpty() 判断字符串是否为空
3. String对象的比较
3.1 equals() 判断字符串是否相同
3.2 compareTo() 比较字符串大小
3.3 compareToIgnoreCase 忽略大小写比较
4. 字符串查找
4.1 charAt() 返回指定索引处的字符
4.2 indexOf()
4.2.1 参数只有一个的时候
4.2.2 有两个参数的时候
4.3 lastIndexOf()
4.3.1 参数只有一个的时候
4.3.2 有两个参数的时候
5. 转化
5.1 数值和字符串转化
5.1.1 数字转字符串 valueof()
5.1.2 valueOf() 的其他用法
5.1.3 字符串转数字
5.2 大小写转换
5.2.1 toUpperCase() 小写转大写
5.2.2 toLowerCase() 大写转小写
5.3 字符数组转字符串
5.4 toCharArray() 字符串转数组
5.5 format() 格式化
6.字符串替换
6.1 replaceFirst()
6.2 replaceAll()
6.3 replace()
7. split() 字符串拆分
8. substring() 字符串截取
9. trim() 去掉字符串中的左右空格,保留中间空格
1. length() 求字符串长度
返回值
返回该对象表示的字符序列的长度。
代码示例:
String str1 = "hello";
String str2 = "Hello world";
String str3 = "";
System.out.println(str1.length());
System.out.println(str2.length());
System.out.println(str3.length());
输出结果:
2. isEmpty() 判断字符串是否为空
返回值
当字符串长度为0的时候返回 true,否则返回 false
代码示例:
String str1 = "hello";
String str2 = "";
System.out.println(str1.isEmpty());
System.out.println(str2.isEmpty());
输出结果:
3. String对象的比较
3.1 equals() 判断字符串是否相同
作用
将此字符串与指定对象进行比较。 其结果是true当且仅当该参数不是null并且是String对象,表示相同的字符序列作为该对象。
返回值
如果给定的对象代表一个String等效于这个字符串为true, 否则为false。
代码示例:
String str1 = "hello";
String str2 = "hello";
String str3 = "world";
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
输出结果:
3.2 compareTo() 比较字符串大小
返回值:
compareTo
方法的返回值是一个整数,它反映了两个字符串的字典顺序关系,具体规则如下:
-
如果调用该方法的字符串(即当前字符串)在字典顺序上小于参数字符串,则返回一个负整数。
-
如果两个字符串相等,则返回 0。
-
如果调用该方法的字符串在字典顺序上大于参数字符串,则返回一个正整数。
代码示例:
String str1 = "abc";
String str2 = "abc";
String str3 = "def";
System.out.println(str1.compareTo(str2));
System.out.println(str1.compareTo(str3));
输出结果:
3.3 compareToIgnoreCase 忽略大小写比较
与compareTo方式相同,但是忽略大小写比较
代码示例:
String str1 = "hello";
String str2 = "Hello";
String str3 = "abcde";
System.out.println(str1.compareToIgnoreCase(str2));
System.out.println(str1.compareToIgnoreCase(str3));
输出结果:
4. 字符串查找
字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法:
4.1 charAt() 返回指定索引处的字符
作用
返回位于指定索引位置的字符,索引范围为0至length() - 1 。例如对于字符串"hello"
,charAt(1)
将返回字符'e'
。
代码示例:
String str1 = "hello";
System.out.println(str1.charAt(0));
System.out.println(str1.charAt(1));
System.out.println(str1.charAt(2));
System.out.println(str1.charAt(3));
System.out.println(str1.charAt(4));
输出结果:
4.2 indexOf()
4.2.1 参数只有一个的时候
作用
返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回-1。
代码示例:
String str1 = "ababcab";
int index1 = str1.indexOf("abc");
int index2 = str1.indexOf("ab");
int index3 = str1.indexOf('b');
int index4 = str1.indexOf("c");
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);
输出结果:
4.2.2 有两个参数的时候
作用
以指定的下标开始搜索,返回指定字符(或字符串)第一次出现在字符串内的下标。
代码示例:
String str1 = "ababcab";
int index1 = str1.indexOf("ab",4);//从str1中下标4位置开始查找
int index2 = str1.indexOf('b',2); //从str1中下标2位置开始查找
System.out.println(index1);
System.out.println(index2);
输出结果:
4.3 lastIndexOf()
4.3.1 参数只有一个的时候
作用
从后往前找,返回指定字符(或字符串)第一次出现的位置,没有返回-1
4.3.2 有两个参数的时候
作用
从fromIndex位置开始找,从后往前找指定字符(或字符串)第一次出现的位置,没有返回-1
代码示例:
String str1 = "ababcababcd";
int index1 = str1.lastIndexOf("abc");
int index2 = str1.lastIndexOf("abc",5); //从5位置倒着往回找
int index3 = str1.lastIndexOf('c');
int index4 = str1.lastIndexOf('c',5);//从5位置倒着往回找
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);
输出结果:
5. 转化
5.1 数值和字符串转化
5.1.1 数字转字符串 valueof()
valueOf的部分重载方法
这些方法都是将数字转化成字符串。
代码示例:
String str1 = String.valueOf(1234);
String str2 = String.valueOf(3.14);
System.out.println(str1);
System.out.println(str2);
输出结果:
5.1.2 valueOf() 的其他用法
使用一:
作用
返回 Object参数的字符串形式。
使用二:
作用
返回将char型的字符数组转化为字符串后的形式
使用三:
作用
如果参数为true ,则返回等于"true"的字符串; 否则,等于一个字符串"false"返回。
使用四:
作用
返回 char参数的字符串形式。
5.1.3 字符串转数字
代码示例:
int data1 = Integer.parseInt("1234");
double data2 = Double.parseDouble("12.34");
System.out.println(data1);
System.out.println(data2);
输出结果:
5.2 大小写转换
5.2.1 toUpperCase() 小写转大写
代码示例:
String s1 = "hello";
String s2 = "Hello";
String ret1 = s1.toUpperCase();
String ret2 = s2.toUpperCase();
System.out.println(ret1);
System.out.println(ret2);
输出结果:
5.2.2 toLowerCase() 大写转小写
代码示例:
String s1 = "HELLO";
String s2 = "Hello";
String ret1 = s1.toLowerCase();
String ret2 = s2.toLowerCase();
System.out.println(ret1);
System.out.println(ret2);
输出结果:
5.3 字符数组转字符串
代码示例:
char[] array1 = {'a','b','c'};
String str1 = new String(array1);
System.out.println(str1);
输出结果:
5.4 toCharArray() 字符串转数组
作用
将字符串转换为新的字符数组。
代码示例:
String s1 = "hello";
char[] array = s1.toCharArray();
System.out.println(Arrays.toString(array));
输出结果:
5.5 format() 格式化
使用指定的格式字符串和参数返回格式化的字符串。
代码示例:
String str = String.format("%d-%d-%d",2023,8,7);
System.out.println(str);
输出结果:
6.字符串替换
使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:
6.1 replaceFirst()
参数
regex - 要匹配此字符串的正则表达式
replacement - 要替换第一个匹配的字符串
作用
1. 从原始字符串的开头开始,搜索并找到第一个与正则表达式匹配的子串。
2. 将该匹配项替换为指定的新字符串。
3. 返回替换后的新字符串。
代码示例:
String str = "abcd abcd abcd";
String ret1 = str.replaceFirst("ab","OO");
System.out.println(ret1);
输出结果:
6.2 replaceAll()
参数
regex 参数是一个正则表达式,用于匹配原始字符串中的子串。
replacement 参数是要替换匹配项的新字符串。
作用
1. 从原始字符串的开头开始,搜索并找到所有与正则表达式匹配的子串。
2. 将每个匹配项都替换为指定的新字符串。
3. 返回替换后的新字符串。
代码示例:
String str = "abcd abcd abcd";
String ret1 = str.replaceAll("ab","OO");
System.out.println(ret1);
输出结果:
需要注意的是,replaceAll方法使用的是正则表达式进行匹配,因此在使用时需要注意正则表达式的语法和特殊字符的转义。如果不需要使用正则表达式进行匹配,可以考虑使用replace方法来进行简单的字符串替换。
6.3 replace()
重载1
作用
通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。
重载2
将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列。 替换从字符串开始到结束,例如,在字符串“aaa”中用“b”替换“aa”将导致“ba”而不是“ab”。
参数
target - 要替换的char值序列
replacement - char值的替换顺序
代码示例:
String str = "abcd abcd abcd";
String ret1 = str.replace("ab","OO");
String ret2 = str.replace('a','A');
System.out.println(ret1);
System.out.println(ret2);
输出结果:
7. split() 字符串拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。 可用方法如下:
重载方法1:
作用
1. 从原始字符串中找到所有与分隔符匹配的子串,并根据分隔符将原始字符串分割成多个子串。
2. 将这些子串存储在一个字符串数组中。
3. 返回该字符串数组。
代码示例1:
String str = "hello abc world";
String[] ret = str.split(" ");
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}
输出结果1:
代码示例2:拆分IP地址
String str = "192.168.1.1";
String[] ret = str.split("\\.");
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}
输出结果2:
代码示例:
String str = "name=zhangsan&age=10";
String[] ret = str.split("=|&"); //用=和&分割
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}
输出结果3
注意事项:
1. 字符"|","*","+"都得加上转义字符,前面加上 "\\"
2. 而如果是 "\\" ,那么就得写成 "\\\\"
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符
代码示例3: 多次拆分
结果和上面输出结果3相似。
重载方法2:
作用
1. 从原始字符串中找到与正则表达式匹配的子串。
2. 将原始字符串分割成多个子串,每个子串都保存在数组中。
3. 只保存前limit-1个子串,如果limit为负数或为零,则不限制分割数。
4. 将剩余的未分割的部分作为数组的最后一个元素保存。
代码示例:
String str = "hello abc world";
String[] ret = str.split(" ",2);//限制分割组数为2组
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}
输出结果:
8. substring() 字符串截取
从一个完整的字符串之中截取出部分内容。可用方法如下:
代码示例:
String str = "abcdefg";
String ret1 = str.substring(0,3); //截取下标0~2字符串
String ret2 = str.substring(3); //截取下标3以后的字符串
System.out.println(ret1);
System.out.println(ret2);
输出结果:
注意事项:
1. 索引从0开始
2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标
9. trim() 去掉字符串中的左右空格,保留中间空格
代码示例:
String str = " abcde fg hijk ";
System.out.println(str);
System.out.println(str.trim());
输出结果:
相关文章:

【JavaSE】String类常用字符串方法总结
目录 1. length() 求字符串长度 2. isEmpty() 判断字符串是否为空 3. String对象的比较 3.1 equals() 判断字符串是否相同 3.2 compareTo() 比较字符串大小 3.3 compareToIgnoreCase 忽略大小写比较 4. 字符串查找 4.1 charAt() 返回指定索引处的字符 4.2 indexOf() 4…...

python3+TensorFlow 2.x(二) 回归模型
目录 回归算法 1、线性回归 (Linear Regression) 一元线性回归举例 2、非线性回归 3、回归分类 回归算法 回归算法用于预测连续的数值输出。回归分析的目标是建立一个模型,以便根据输入特征预测目标变量,在使用 TensorFlow 2.x 实现线性回归模型时&…...

机器人抓取与操作概述(深蓝)——1
工业机器人:① “臂”的形态 ② “手”的形态 ③ 视觉,力和触觉 1 机器人的不同形态 “臂”的形态 “手”的形态 2 常见的操作任务 操作:插入、推和滑 抓取:两指(平行夹爪)抓取、灵巧手抓取 落地-产…...

简单聊聊“DeepSeek”
目录 DeepSeek一夜火爆并受到广泛关注的优势 技术实力与创新 低成本与高效率 开源与免费 市场策略与应用领域 团队与资金优势 行业认可与媒体关注 DeepSeek在推理效率上的特别之处 多头潜在注意力(MLA) 多词元预测(MTP)…...

使用 Docker + Nginx + Certbot 实现自动化管理 SSL 证书
使用 Docker Nginx Certbot 实现自动化管理 SSL 证书 在互联网安全环境日益重要的今天,为站点或应用部署 HTTPS 已经成为一种常态。然而,手动申请并续期证书既繁琐又容易出错。本文将以 Nginx Certbot 为示例,基于 Docker 容器来搭建一个…...

粒子群算法 笔记 数学建模
引入: 如何找到全局最大值:如果只是贪心的话,容易被局部最大解锁定 方法有:盲目搜索,启发式搜索 盲目搜索:枚举法和蒙特卡洛模拟,但是样例太多花费巨量时间 所以启发式算法就来了,通过经验和规…...

【C语言】结构体与共用体深入解析
在C语言中,结构体(struct)和共用体(union)都是用来存储不同类型数据的复合数据类型,它们在程序设计中具有重要的作用。 推荐阅读:操作符详细解说,让你的编程技能更上一层楼 1. 结构体…...

es6.7.1分词器ik插件安装-和head插件连接es特殊配置
es6.7.1分词器ik插件安装-和head插件连接es特殊配置 如果对运维课程感兴趣,可以在b站上、A站或csdn上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频 1.查看es6.7.1和es-head安装位置和es插件路径 [ro…...

java求职学习day18
常用的设计原则和设计模式 1 常用的设计原则(记住) 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 常用的设计原则 (1)开闭原则(Open Close Principle…...

单链表专题(上)
链表的定义与创建 线性表: 1. 物理结构上不一定是线性的 2. 逻辑结构上一定是线性的 链表是一种物理存储结构上非连续,非顺序的存储结构 链表也是线性表的一种,但是在物理结构上不是连续的 链表是由一个一个的节点组成,需要数…...

【stm32学习】STM32F103相关特性
| 名称 | 缩写 | 频率 | 外部连接 | 功能 | 用途 | 特性 | |--------------------|------|----------------|---------------|------------|--------------|----------------| | 外部高速晶体振荡器 | HSE | 4~16MHz …...

PostGIS笔记:PostgreSQL中表、键和索引的基础操作
创建、查看与删除表 在数据库中创建一个表,使用如下代码: create table streets (id serial not null primary key, name varchar(50));这里的表名是streets,id是主键所以非空,采用serial数据类型,这个数据类型会自动…...

蓝桥杯python语言基础(3)——循环结构
一、for语句 理解range函数 range(start, stop, step) start: 序列开始的数字(默认为0)。stop: 序列结束的数字(不包含stop)。step: 步长(默认为1)。 练习 输出在 l 和 r 之间的所有偶数: pri…...

微服务网关鉴权之sa-token
目录 前言 项目描述 使用技术 项目结构 要点 实现 前期准备 依赖准备 统一依赖版本 模块依赖 配置文件准备 登录准备 网关配置token解析拦截器 网关集成sa-token 配置sa-token接口鉴权 配置satoken权限、角色获取 通用模块配置用户拦截器 api模块配置feign…...

23【进制的理解】
很多人可能听过计算机的最底层是2进制执行,但是原理并不知道,我们今天先不讨论那么复杂的问题,先讨论什么是进制 1910,10并不是1个字符,而是2个字符,也就是说在10进制里面没有“10”这个字符,1…...

jemalloc 5.3.0的tsd模块的源码分析
一、背景 在主流的内存库里,jemalloc作为android 5.0-android 10.0的默认分配器肯定占用了非常重要的一席之地。jemalloc的低版本和高版本之间的差异特别大,低版本的诸多网上整理的总结,无论是在概念上和还是在结构体命名上在新版本中很多都…...

【Convex Optimization Stanford】Lec3 Function
【Convex Optimization Stanford】Lec3 Function 前言凸函数的定义对凸函数在一条线上的限制增值扩充? 一阶条件二阶条件一些一阶/二阶条件的例子象集和sublevel set关于函数凸性的扩展(Jesen Inequality)保持函数凸性的操作非负加权和 & 仿射函数的…...

深入 Rollup:从入门到精通(三)Rollup CLI命令行实战
准备阶段:初始化项目 初始化项目,这里使用的是pnpm,也可以使用yarn或者npm # npm npm init -y # yarn yarn init -y # pnpm pnpm init安装rollup # npm npm install rollup -D # yarn yarn add rollup -D # pnpm pnpm install rollup -D在…...

wangEditor富文本编辑器,Laravel上传图片配置和使用
文章目录 前言步骤1. 构造好前端模版2. 搭建后端存储3. 调试 前言 由于最近写项目需要使用富文本编辑器,使用的是VUE3.0版本所以很多不兼容,实际测试以后推荐使用wangEditor 步骤 构造好前端模版搭建后端存储调试 1. 构造好前端模版 安装模版 模版安…...

chrome源码剖析—进程通信
Chrome 浏览器采用多进程架构(multi-process architecture),这种架构使得每个浏览器标签、扩展、插件、GPU 渲染等都在独立的进程中运行。为了确保不同进程之间的高效通信,Chrome 使用 进程间通信(IPC, Inter-Process …...

JJJ:linux时间子系统相关术语
文章目录 墙上时间内核管理的各种时间无时钟滴答模式(tickless mode 或 no-tick mode)简要介绍具体实现动态时钟滴答 Dynamic Ticks完全无时钟滴答(Full Tickless) nohz sleep单触发模式 oneshot mode 墙上时间 真实世界的真实时…...

0 基础学运维:解锁 K8s 云计算运维工程师成长密码
前言:作为一个过来人,我曾站在技术的门槛之外,连电脑运行内存和内存空间都傻傻分不清,完完全全的零基础。但如今,我已成长为一名资深的k8s云计算运维工程师。回顾这段历程,我深知踏上这条技术之路的艰辛与不…...

大一计算机的自学总结:位运算的应用及位图
前言 不仅异或运算有很多骚操作,位运算本身也有很多骚操作。(尤其后几个题,太逆天了) 一、2 的幂 class Solution { public:bool isPowerOfTwo(int n) {return n>0&&n(n&-n);} }; 根据二进制表示数的原理&#…...

计算机毕业设计Django+Tensorflow音乐推荐系统 机器学习 深度学习 音乐可视化 音乐爬虫 知识图谱 混合神经网络推荐算法 大数据毕设
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

AI 图片涌入百度图库
在这个信息爆炸的时代,我们习惯了通过搜索引擎来获取各种想要的信息和图片。然而,现在打开搜索引擎看到的却是许多真假难辨的信息——AI图片,这部分数据正以惊人的速度涌入百度图库,让小编不禁想问:未来打开百度图库不…...

可爱狗狗的404动画页面HTML源码
源码介绍 可爱狗狗的404动画页面HTML源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果 效果预览 源码获取 可爱狗狗的404动画页面HTML源码...

【微服务与分布式实践】探索 Dubbo
核心组件 服务注册与发现原理 服务提供者启动时,会将其服务信息(如服务名、版本、所在节点的网络地址等)注册到注册中心。服务消费者则可以从注册中心发现可用的服务提供者列表,并与之通信。注册中心会存储服务的信息,…...

OpenCSG月度更新2025.1
1月的OpenCSG取得了一些亮眼的成绩 在2025年1月,OpenCSG在产品和社区方面继续取得了显著进展。产品方面,推出了AutoHub浏览器自动化助手,帮助用户提升浏览体验;CSGHub企业版功能全面升级,现已开放试用申请,…...

C++封装红黑树实现mymap和myset和模拟实现详解
文章目录 map和set的封装map和set的底层 map和set的模拟实现insertiterator实现的思路operatoroperator- -operator[ ] map和set的封装 介绍map和set的底层实现 map和set的底层 一份模版实例化出key的rb_tree和pair<k,v>的rb_tree rb_tree的Key和Value不是我们之前传统意…...

二次封装的方法
二次封装 我们开发中经常需要封装一些第三方组件,那么父组件应该怎么传值,怎么调用封装好的组件原有的属性、插槽、方法,一个个调用虽然可行,但十分麻烦,我们一起来看更简便的方法。 二次封装组件,属性怎…...