95. Java 数字和字符串 - 操作字符串的其他方法
文章目录
- 95. Java 数字和字符串 - 操作字符串的其他方法
- 一、分割字符串
- 二、子序列与修剪
- 三、在字符串中搜索字符和子字符串
- 四、将字符和子字符串替换为字符串
- 五、`String` 类的实际应用 —— 文件名处理示例
- 示例:`Filename` 类
- 示例:`FilenameDemo` 类
- 总结
95. Java 数字和字符串 - 操作字符串的其他方法
Java
的 String
类提供了大量方法来操作和处理字符串,除了基本的创建、拼接、获取字符和子字符串之外,还包括以下常用功能:
一、分割字符串
split(String regex)
和 **split(String regex, int limit)
**这两个方法使用正则表达式对字符串进行分割,返回一个字符串数组。regex
参数为用于匹配的正则表达式。limit
参数指定返回数组的最大长度。
示例:
String fruits = "apple,banana,orange,grape";
String[] fruitArray = fruits.split(",");
for (String fruit : fruitArray) {System.out.println(fruit);
}
运行结果:
apple
banana
orange
grape
如果指定 limit 参数,例如:
String[] limitedArray = fruits.split(",", 3);
for (String s : limitedArray) {System.out.println(s);
}
则输出:
apple
banana
orange,grape
二、子序列与修剪
-
**
subSequence(int beginIndex, int endIndex)
**返回一个新的字符序列,与substring()
方法类似。注意返回值类型为CharSequence
。示例:
String str = "Hello, world!"; CharSequence subSeq = str.subSequence(7, 12); System.out.println(subSeq); // 输出 "world"
-
**
trim()
**返回一个新的字符串,该字符串移除了前导和尾随的空格字符。示例:
String raw = " Hello, Java! "; String trimmed = raw.trim(); System.out.println("[" + trimmed + "]"); // 输出 "[Hello, Java!]"
-
toLowerCase()
和 **toUpperCase()
**分别返回字符串转换为小写和大写的副本。若无需转换,则返回原始字符串。示例:
String mixedCase = "Java Programming"; System.out.println(mixedCase.toLowerCase()); // java programming System.out.println(mixedCase.toUpperCase()); // JAVA PROGRAMMING
三、在字符串中搜索字符和子字符串
Java 的 String 类提供了多种方法来查找字符或子字符串的位置,常用方法包括:
-
**
indexOf(
) 与lastIndexOf()
**这些方法用于查找指定字符或字符串首次或最后一次出现的位置:int indexOf(int ch)
:返回字符 ch 第一次出现的位置;如果不存在则返回-1
。int indexOf(int ch, int fromIndex)
:从指定位置开始搜索。int indexOf(String str)
:返回子字符串第一次出现的位置。int indexOf(String str, int fromIndex)
:从指定位置开始查找子字符串。- 对应的
lastIndexOf()
方法则从字符串末尾开始向前搜索。
示例:
String text = "Java is fun, and Java is powerful!"; int firstJava = text.indexOf("Java"); int lastJava = text.lastIndexOf("Java"); System.out.println("第一次出现 Java 的位置: " + firstJava); System.out.println("最后一次出现 Java 的位置: " + lastJava);
-
**
contains(CharSequence s)
**判断字符串是否包含指定的字符序列,返回 true 或 false。示例:
boolean hasFun = text.contains("fun"); System.out.println("字符串中是否包含 'fun'? " + hasFun);
四、将字符和子字符串替换为字符串
虽然 String
类没有直接提供插入子字符串的方法,但可以使用替换方法来生成新的字符串。常用替换方法包括:
-
**
replace(char oldChar, char newChar)
**替换所有出现的旧字符为新字符。示例:
String s = "banana"; String replaced = s.replace('a', 'o'); System.out.println(replaced); // 输出 "bonono"
-
**
replace(CharSequence target, CharSequence replacement)
**替换所有匹配目标序列的子字符串为指定的新文本。示例:
String s = "I like Java. Java is fun."; String replaced = s.replace("Java", "Python"); System.out.println(replaced); // 输出 "I like Python. Python is fun."
-
**
replaceAll(String regex, String replacement)
**使用正则表达式替换所有匹配的子字符串。示例:
String s = "one1two2three3"; String replaced = s.replaceAll("[0-9]", "#"); System.out.println(replaced); // 输出 "one#two#three#"
-
**
replaceFirst(String regex, String replacement)
**替换第一个匹配正则表达式的子字符串。示例:
String s = "one1two2three3"; String replaced = s.replaceFirst("[0-9]", "#"); System.out.println(replaced); // 输出 "one#two2three3"
五、String
类的实际应用 —— 文件名处理示例
下面的示例展示了如何利用 lastIndexOf()
和 substring()
方法来解析文件路径,分离出路径、文件名和扩展名。
示例:Filename
类
public class Filename {private String fullPath;private char pathSeparator, extensionSeparator;public Filename(String str, char sep, char ext) {fullPath = str;pathSeparator = sep;extensionSeparator = ext;}// 获取文件扩展名public String extension() {int dot = fullPath.lastIndexOf(extensionSeparator);return fullPath.substring(dot + 1);}// 获取不带扩展名的文件名public String filename() {int dot = fullPath.lastIndexOf(extensionSeparator);int sep = fullPath.lastIndexOf(pathSeparator);return fullPath.substring(sep + 1, dot);}// 获取文件路径public String path() {int sep = fullPath.lastIndexOf(pathSeparator);return fullPath.substring(0, sep);}
}
示例:FilenameDemo
类
public class FilenameDemo {public static void main(String[] args) {final String FPATH = "/home/user/index.html";Filename myHomePage = new Filename(FPATH, '/', '.');System.out.println("Extension = " + myHomePage.extension());System.out.println("Filename = " + myHomePage.filename());System.out.println("Path = " + myHomePage.path());}
}
运行结果为:
Extension = html
Filename = index
Path = /home/user
说明:
- 通过
lastIndexOf()
方法定位路径分隔符和扩展名分隔符的位置,使用substring()
提取出相应部分。 - 注意,此代码假定传入的路径字符串中确实包含分隔符,否则会抛出异常。在生产代码中应进行参数验证。
总结
- 操作字符串的其他方法:包括分割(
split
)、子序列(subSequence
)、修剪(trim
)、大小写转换(toLowerCase/toUpperCase
)。 - 搜索方法:利用
indexOf
、lastIndexOf
和contains
方法查找字符或子字符串的位置。 - 替换方法:通过
replace
、replaceAll
和replaceFirst
方法替换字符串中的部分内容,生成新字符串。 - 实际应用:结合
lastIndexOf
和substring
方法可以实现如文件名解析等实际需求。
通过这些方法,我们可以灵活地操作字符串,为后续的数据处理、文本解析、用户输入校验等任务提供强有力的支持。
相关文章:
95. Java 数字和字符串 - 操作字符串的其他方法
文章目录 95. Java 数字和字符串 - 操作字符串的其他方法一、分割字符串二、子序列与修剪三、在字符串中搜索字符和子字符串四、将字符和子字符串替换为字符串五、String 类的实际应用 —— 文件名处理示例示例:Filename 类示例:FilenameDemo 类 总结 95…...

IBM DB2分布式数据库架构
一、什么是分布式数据库架构 分布式数据库架构是现代数据库系统的重要发展方向,特别适合处理大规模数据、高并发访问和高可用性需求的应用场景。下面我们从原理、架构模式、关键技术、实现方式和常见产品几个方面来系统讲 1、分布式数据库的基本概念与原理 1. 什…...
初始化已有项目仓库,推送远程(Git)
初始化Git仓库(如果还没初始化) git init 添加并提交文件 git add . ("."表示当前项目所有文件) git commit -m “first commit” 关联远程仓库(如果还没关联) git remote add origin http://xxxxxxxx 推送代码 …...

Android Studio 向模拟器手机添加照片、视频、音乐
Android Studio 向模拟器手机添加照片、视频、音乐(其实都是一样的,只是添加到不同的文件夹),例如我们在很多程序中功能例如:选择头像,跳转到手机相册选择头像,此时相册为空,即模拟器没有图片资…...

数据结构-算法学习C++(入门)
目录 03二进制和位运算04 选择、冒泡、插入排序05 对数器06 二分搜索07 时间复杂度和空间复杂度08 算法和数据结构09 单双链表09.1单双链表及反转09.2合并链表09.2两数相加09.2分隔链表 013队列、栈、环形队列013.1队列013.2栈013.3循环队列 014栈-队列的相互转换014.1用栈实现…...
访谈 | 吴恩达全景解读 AI Agents 发展现状:多智能体、工具生态、评估体系、语音栈、Vibe Coding 及创业建议一文尽览
在最新的 LangChain Interrupt 大会上(2025),LangChain 联合创始人 & CEO Harrison Chase 与吴恩达(Andrew Ng)就 AI Agnets 的发展现状,进行了一场炉边谈话。 吴恩达回顾了与 LangChain 的渊源&#…...

连接关键点:使用 ES|QL 联接实现更丰富的可观测性洞察
作者:来自 Elastic Luca Wintergerst ES|QL 的 LOOKUP JOIN 现已进入技术预览阶段,它允许你在查询时对日志、指标和追踪进行丰富处理,无需在摄取时进行非规范化。动态添加部署、基础设施或业务上下文,减少存储占用,加速…...
Tiktok App 登录账号、密码、验证码 XOR 加密算法
抖音 App 登录账号、密码、验证码 XOR 加密算法% E9 n z, \& R1 a4 b. ^ 流程分析 登录 Tiktok APP 时,通过抓包发现账号密码是非明文传输的。 <?php// http://xxx.xx.x.x.x/tiktok/$tiktok new TikTokClient();$userId 7212597544604484614; $secUid …...

Flask + Celery 应用
目录 Flask Celery 应用项目结构1. 创建app.py2. 创建tasks.py3. 创建celery_worker.py4. 创建templates目录和index.html运行应用测试文件 Flask Celery 应用 对于Flask与Celery结合的例子,需要创建几个文件。首先安装必要的依赖: pip install flas…...

奥威BI+AI数据分析:企业数智化转型的加速器
在当今数据驱动的时代,企业对于数据分析的需求日益增长。奥威BIAI数据分析的组合,正成为众多企业数智化转型的加速器。 奥威BI以其强大的数据处理和可视化能力著称。它能够轻松接入多种数据源,实现数据的快速整合与清洗。通过内置的ETL工具&…...

python打卡day43
复习日 作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 找了个街头食物图像分类的数据集Popular Street Foods(其实写代码的时候就开始后悔了),原因在于&…...
MySQL 如何判断某个表中是否存在某个字段
在MySQL中,判断某个表中是否存在某个字段,可以通过查询系统数据库 INFORMATION_SCHEMA.COLUMNS 实现。以下是详细步骤和示例: 方法:使用 INFORMATION_SCHEMA.COLUMNS 通过查询系统元数据表 COLUMNS,检查目标字段是否存…...

Linux --进程优先级
概念 什么是进程优先级,为什么需要进程优先级,怎么做到进程优先级这是本文需要解释清楚的。 优先级的本质其实就是排队,为了去争夺有限的资源,比如cpu的调度。cpu资源分配的先后性就是指进程的优先级。优先级高的进程有优先执行的…...

安装和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录6
前言 昨天更新了四篇博客,我们顺利的 安装了 ubuntu server 服务器,并且配置好了 ssh 免密登录服务器,安装好了 服务器常用软件安装, 配置好了 zsh 和 vim 以及 通过 NVM 安装好Nodejs,还有PNPM包管理工具 。 作为服务器的运行…...
Linux 测试本机与192.168.1.130 主机161/udp端口连通性
Linux 测试本机与 192.168.1.130 主机 161/UDP 端口连通性 161/UDP 端口是 SNMP(简单网络管理协议)的标准端口。以下是多种测试方法: 🛠️ 1. 使用 nmap 进行专业测试(推荐) sudo nmap -sU -p 161 -Pn 1…...
OpenCV 滑动条调整图像亮度
一、知识点 1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange 0, void * userdata 0); (1)、创建一个滑动条并将其附在指定窗口上。 (2)、参数说明: trackbarname: 创建的…...

图解gpt之注意力机制原理与应用
大家有没有注意到,当序列变长时,比如翻译一篇长文章,或者处理一个长句子,RNN这种编码器就有点力不从心了。它把整个序列信息压缩到一个固定大小的向量里,信息丢失严重,而且很难记住前面的细节,特…...
硬件学习笔记--65 MCU的RAM及FLash简介
MCU(微控制器单元)内部的 RAM 和 Flash 是最关键的两种存储器,它们直接影响MCU的性能、功耗和编程方式。以下是它们的详细讲解及作用: 1. RAM(随机存取存储器) 1.1 特性 1)易失性:…...

【Oracle】视图
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 视图基础概述1.1 视图的概念与特点1.2 视图的工作原理1.3 视图的分类 2. 简单视图2.1 创建简单视图2.1.1 基本简单视图2.1.2 带计算列的简单视图 2.2 简单视图的DML操作2.2.1 通过视图进行INSERT操作2.2.2 通…...
数据库 MongoDB (NoSQL) 与 MySQL (SQL) 的写法对比
MongoDB (NoSQL) 与 MySQL (SQL) 的写法对比及优劣势分析 基本概念差异 MySQL/SQL:关系型数据库,使用结构化查询语言(SQL),数据以表格形式存储,有预定义的模式(schema)MongoDB/NoSQL:文档型数据库,无固定…...
基于粒子滤波的PSK信号解调实现
基于粒子滤波的PSK信号解调实现 一、引言 相移键控(PSK)是数字通信中广泛应用的调制技术。在非高斯噪声和动态相位偏移环境下,传统锁相环(PLL)性能受限。粒子滤波(Particle Filter)作为一种序列蒙特卡洛方法,能有效处理非线性/非高斯系统的状态估计问题。本文将详细阐…...

更强劲,更高效:智源研究院开源轻量级超长视频理解模型Video-XL-2
长视频理解是多模态大模型关键能力之一。尽管OpenAI GPT-4o、Google Gemini等私有模型已在该领域取得显著进展,当前的开源模型在效果、计算开销和运行效率等方面仍存在明显短板。近日,智源研究院联合上海交通大学等机构,正式发布新一代超长视…...

2025.6.3学习日记 Nginx 基本概念 配置 指令 文件
1.初始nginx Nginx(发音为 “engine x”)是一款高性能的开源 Web 服务器软件,同时也具备反向代理、负载均衡、邮件代理等功能。它由俄罗斯工程师 Igor Sysoev 开发,最初用于解决高并发场景下的性能问题,因其轻量级、高…...

【连接器专题】案例:产品测试顺序表解读与应用
在查看SD卡座连接器的规格书,一些测试报告时,你可能会看到如下一张产品测试顺序表。为什么会出现一张测试顺序表呢? 测试顺序表的使用其实定义测试环节的验证的“路线图”和“游戏规则”,本文就以我人个经验带领大家一起看懂这张表并理解其设计逻辑。 测试顺序表结构 测试…...

星动纪元的机器人大模型 VPP,泛化能力效果如何?与 VLA 技术的区别是什么?
点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 VPP 利用了大量互联网视频数据进行训练,直接学习人类动作,减轻了对于高质量机器人真机数据的依赖,且可在不同人形机器人本体之间自如切换,这有望…...

4000万日订单背后,饿了么再掀即时零售的“效率革命”
当即时零售转向价值深耕,赢面就是综合实力的强弱。 文|郭梦仪 编|王一粟 在硝烟弥漫的外卖行业“三国杀”中,饿了么与淘宝闪购的日订单量竟然突破了4000万单。 而距淘宝闪购正式上线,还不到一个月。 在大额福利优惠…...

入门AJAX——XMLHttpRequest(Get)
一、什么是 AJAX AJAX Asynchronous JavaScript And XML(异步的 JavaScript 和 XML)。 1、XML与异步JS XML: 是一种比较老的前后端数据传输格式(已经几乎被 JSON 代替)。它的格式与HTML类似,通过严格的闭合自定义标…...

5分钟申请edu邮箱【方案本周有效】
这篇文章主要展示的是成果。如果你是第1次看见我的内容,具体的步骤请翻看往期的两篇作品。先看更正补全,再看下一个。 建议你边看边操作。 【更正补全】edu教育申请通过方案 本周 edu教育邮箱注册可行方案 #edu邮箱 伟大无需多言 我已经验证了四个了…...

闲谈PMIC和SBC
今天不卷,简单写点。 在ECU设计里,供电芯片选型是逃不开的话题,所以聊聊PMIC或者SBC的各自特点,小小总结下。 PMIC,全称Power Management Intergrated Circuits,听名字就很专业:电源管理&…...

Java垃圾回收机制深度解析:从理论到实践的全方位指南
Java垃圾回收(GC)是Java虚拟机(JVM)的核心功能,它自动管理内存分配与回收,避免了C/C中常见的内存泄漏问题。本文将深入剖析Java垃圾回收的工作原理、算法实现、收集器类型及调优策略,助你全面掌握JVM内存管理的精髓。 一、垃圾回收基础概念 …...