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

95. Java 数字和字符串 - 操作字符串的其他方法

文章目录

  • 95. Java 数字和字符串 - 操作字符串的其他方法
    • 一、分割字符串
    • 二、子序列与修剪
    • 三、在字符串中搜索字符和子字符串
    • 四、将字符和子字符串替换为字符串
    • 五、`String` 类的实际应用 —— 文件名处理示例
      • 示例:`Filename` 类
      • 示例:`FilenameDemo` 类
    • 总结

95. Java 数字和字符串 - 操作字符串的其他方法

JavaString 类提供了大量方法来操作和处理字符串,除了基本的创建、拼接、获取字符和子字符串之外,还包括以下常用功能:

一、分割字符串

  • 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)。
  • 搜索方法:利用 indexOflastIndexOf contains 方法查找字符或子字符串的位置。
  • 替换方法:通过 replacereplaceAllreplaceFirst 方法替换字符串中的部分内容,生成新字符串。
  • 实际应用:结合 lastIndexOfsubstring 方法可以实现如文件名解析等实际需求。

通过这些方法,我们可以灵活地操作字符串,为后续的数据处理、文本解析、用户输入校验等任务提供强有力的支持。

http://www.lryc.cn/news/2398251.html

相关文章:

  • IBM DB2分布式数据库架构
  • 初始化已有项目仓库,推送远程(Git)
  • Android Studio 向模拟器手机添加照片、视频、音乐
  • 数据结构-算法学习C++(入门)
  • 访谈 | 吴恩达全景解读 AI Agents 发展现状:多智能体、工具生态、评估体系、语音栈、Vibe Coding 及创业建议一文尽览
  • 连接关键点:使用 ES|QL 联接实现更丰富的可观测性洞察
  • Tiktok App 登录账号、密码、验证码 XOR 加密算法
  • Flask + Celery 应用
  • 奥威BI+AI数据分析:企业数智化转型的加速器
  • python打卡day43
  • MySQL 如何判断某个表中是否存在某个字段
  • Linux --进程优先级
  • 安装和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录6
  • Linux 测试本机与192.168.1.130 主机161/udp端口连通性
  • OpenCV 滑动条调整图像亮度
  • 图解gpt之注意力机制原理与应用
  • 硬件学习笔记--65 MCU的RAM及FLash简介
  • 【Oracle】视图
  • 数据库 MongoDB (NoSQL) 与 MySQL (SQL) 的写法对比
  • 基于粒子滤波的PSK信号解调实现
  • 更强劲,更高效:智源研究院开源轻量级超长视频理解模型Video-XL-2
  • 2025.6.3学习日记 Nginx 基本概念 配置 指令 文件
  • 【连接器专题】案例:产品测试顺序表解读与应用
  • 星动纪元的机器人大模型 VPP,泛化能力效果如何?与 VLA 技术的区别是什么?
  • 4000万日订单背后,饿了么再掀即时零售的“效率革命”
  • 入门AJAX——XMLHttpRequest(Get)
  • 5分钟申请edu邮箱【方案本周有效】
  • 闲谈PMIC和SBC
  • Java垃圾回收机制深度解析:从理论到实践的全方位指南
  • Ubuntu系统 | 本地部署ollama+deepseek