当前位置: 首页 > news >正文

【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、回归分类 回归算法 回归算法用于预测连续的数值输出。回归分析的目标是建立一个模型&#xff0c;以便根据输入特征预测目标变量&#xff0c;在使用 TensorFlow 2.x 实现线性回归模型时&…...

机器人抓取与操作概述(深蓝)——1

工业机器人&#xff1a;① “臂”的形态 ② “手”的形态 ③ 视觉&#xff0c;力和触觉 1 机器人的不同形态 “臂”的形态 “手”的形态 2 常见的操作任务 操作&#xff1a;插入、推和滑 抓取&#xff1a;两指&#xff08;平行夹爪&#xff09;抓取、灵巧手抓取 落地-产…...

简单聊聊“DeepSeek”

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

使用 Docker + Nginx + Certbot 实现自动化管理 SSL 证书

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

粒子群算法 笔记 数学建模

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

【C语言】结构体与共用体深入解析

在C语言中&#xff0c;结构体&#xff08;struct&#xff09;和共用体&#xff08;union&#xff09;都是用来存储不同类型数据的复合数据类型&#xff0c;它们在程序设计中具有重要的作用。 推荐阅读&#xff1a;操作符详细解说&#xff0c;让你的编程技能更上一层楼 1. 结构体…...

es6.7.1分词器ik插件安装-和head插件连接es特殊配置

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

java求职学习day18

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

单链表专题(上)

链表的定义与创建 线性表&#xff1a; 1. 物理结构上不一定是线性的 2. 逻辑结构上一定是线性的 链表是一种物理存储结构上非连续&#xff0c;非顺序的存储结构 链表也是线性表的一种&#xff0c;但是在物理结构上不是连续的 链表是由一个一个的节点组成&#xff0c;需要数…...

【stm32学习】STM32F103相关特性

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

PostGIS笔记:PostgreSQL中表、键和索引的基础操作

创建、查看与删除表 在数据库中创建一个表&#xff0c;使用如下代码&#xff1a; create table streets (id serial not null primary key, name varchar(50));这里的表名是streets&#xff0c;id是主键所以非空&#xff0c;采用serial数据类型&#xff0c;这个数据类型会自动…...

蓝桥杯python语言基础(3)——循环结构

一、for语句 理解range函数 range(start, stop, step) start: 序列开始的数字&#xff08;默认为0&#xff09;。stop: 序列结束的数字&#xff08;不包含stop&#xff09;。step: 步长&#xff08;默认为1&#xff09;。 练习 输出在 l 和 r 之间的所有偶数&#xff1a; pri…...

微服务网关鉴权之sa-token

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

23【进制的理解】

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

jemalloc 5.3.0的tsd模块的源码分析

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

【Convex Optimization Stanford】Lec3 Function

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

深入 Rollup:从入门到精通(三)Rollup CLI命令行实战

准备阶段&#xff1a;初始化项目 初始化项目&#xff0c;这里使用的是pnpm&#xff0c;也可以使用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. 调试 前言 由于最近写项目需要使用富文本编辑器&#xff0c;使用的是VUE3.0版本所以很多不兼容&#xff0c;实际测试以后推荐使用wangEditor 步骤 构造好前端模版搭建后端存储调试 1. 构造好前端模版 安装模版 模版安…...

chrome源码剖析—进程通信

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

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...