如何在 Java 中从字符串中删除子字符串?2024 年 10 月 23 日 | 阅读 9 分钟 在 Java 中,从字符串中删除子字符串涉及对原始字符串进行操作,以排除指定的子字符串。此过程可以通过多种方式实现,通常涉及字符串处理方法,这些方法可以识别子字符串的位置,然后创建一个不包含不需要的部分的新字符串。基本概念围绕着利用 Java 强大的 String API 来有效定位和消除子字符串,同时保持原始字符串其余部分的完整性。Java 提供了几种从字符串中删除子字符串的方法。 场景以下是您可能需要在 Java 中从字符串中删除子字符串的一些场景 清理用户输入场景:一个 Web 应用程序收集用户输入,但有些用户会包含不需要的短语或字符(例如,“请删除此内容”或 HTML 标签,如 <script>)。 示例:删除特定短语或字符集的所有实例,以净化输入。 格式化数据场景:一个程序处理数据文件,这些文件在每个条目中包含不必要的标题或页脚(例如,“报告开始”或“报告结束”)。 示例:删除这些标题和页脚,以便在进一步处理之前标准化数据格式。 删除敏感信息场景:应用程序记录的错误消息无意中包含密码或 API 密钥等敏感信息。 示例:在保存或显示日志条目之前删除这些敏感子字符串。 简化 URL场景:一个网页抓取器收集包含跟踪参数的 URL(例如,“?utm_source=newsletter”)。 示例:剥离这些参数以获得基础 URL,以便更清晰地存储和分析。 文本规范化场景:应用程序处理包含重复样板短语的文本文档(例如,电子邮件末尾的“此致敬礼”)。 示例:删除这些短语以标准化文本,以便更好地阅读或分析。 自定义输出场景:一个模板引擎生成动态内容,但某些占位符或标签(例如,“{{username}}”)需要在最终输出中删除。 示例:剥离这些占位符以干净地呈现最终文档。 所有这些场景都涉及需要识别和删除大字符串中的特定子字符串以达到预期结果,从而确保剩余文本干净、准确并为预期用途做好准备。 1) 使用 replace() 方法String 类的 replace() 方法被重载,提供了该方法的两种不同实现,并提供了一种从字符串中删除子字符串的直接方法。通过将不需要的子字符串替换为空字符串,我们有效地将其从原始字符串中删除。 此方法既直观又方便,使其成为简单字符串操作的热门选择。它可以处理子字符串的所有出现,确保指定的部分在字符串中出现的所有地方都被完全删除。 在第一种方法中,将一个新字符添加到字符串中,以替换所有先前的字符。 此方法在所有旧字符都已更新后返回带有新字符的字符串。 语法 如果字符串中找不到新字符,则该过程返回此字符串。 文件名:RemoveSubString.java 输出 JavatPoint is for teaching purpose 2) 使用 CharSequence第二种技术使用 CharSequence 替换所需的字符串,而 CharSequence 只是字符的集合。CharSequence 是一个表示字符序列的接口。 它由 String、StringBuilder 和 StringBuffer 等多个类实现。要从字符串中删除特定的子字符串,您可以使用 replace 方法,该方法接受两个 CharSequence 参数。通过将我们要删除的子字符串作为第一个参数,并将空字符串作为第二个参数传递,您可以有效地从原始字符串中删除指定的子字符串。此方法利用 CharSequence 的灵活性和强大功能来统一处理各种字符序列。 语法 此操作与第一种操作仅有的区别在于它替换了字符组成的字符串。 文件名:RemoveSubstringExample.java 输出 Hello, this is a string. 3) 将子字符串替换为空字符串用空字符串替换子字符串是删除该子字符串的常用技术。通过使用 replace() 方法,并将我们要删除的子字符串作为第一个参数,将空字符串 ("") 作为第二个参数,我们有效地消除了指定的子字符串。 这种方法很简单,并且利用了 Java String 类提供的强大的字符串操作功能。结果是一个新的字符串,其中删除了指定子字符串的所有实例,而原始字符串的其余部分保持不变。Java 允许我们轻松地用空字符串替换要从 String 中删除的子字符串。 语法 文件名:RemoveSubStringFromString.java 输出 ![]() 4) 使用 String 的 replaceFirst() 方法String 类提供的 replaceFirst() 方法允许我们删除字符串中特定子字符串的第一个匹配项。它接受两个参数:我们要替换的子字符串和替换字符串。通过将空字符串 ("") 作为替换字符串,我们有效地从原始字符串中删除了指定子字符串的第一个匹配项。 当只想删除子字符串的第一个匹配项而保留后续匹配项不变时,此方法很有用。replaceFirst() 方法提供了一种方便有效的 Java 字符串操作方法。 此方法搜索与正则表达式匹配的字符串,如果找到,则将其替换为给定的字符串。 在后台,此函数通过使用 Pattern 类的 **compile()** 和 **matcher()** 方法,使用正则表达式提取文本。 语法 将创建一个正则表达式来从字符串中提取一个数字并将其替换为另一个数字字符串。 注意:此数字只会更改字符串的前两位数字;其余数字将保持不变。文件名:RemoveSubStringFromString.java 输出 ![]() 5) 使用 replaceAll() 方法**replaceAll()** 方法与 **replaceFirst()** 不同,它使用正则表达式来替换字符串中的所有实例。 String 类提供的 replaceAll() 方法允许我们将字符串或模式中的特定子字符串或模式的所有匹配项替换为另一个子字符串或模式。它接受两个参数:表示我们要替换的子字符串或模式的正则表达式,以及替换字符串或模式。 使用 replaceAll() 时,我们定义一个匹配您要替换的子字符串或模式的正则表达式。通过将此模式作为第一个参数,将替换字符串或模式作为第二个参数,我们可以有效地将指定子字符串或模式的所有匹配项替换为替换值。 它可用于在字符串中执行全局替换,例如删除特定子字符串的所有实例、替换特定模式或基于模式匹配转换文本。它提供了一种灵活而强大的 Java 字符串操作方法,尤其是在处理涉及模式的复杂替换场景时。 与 **replaceFirst()** 类似,此方法通过使用 **compile()** 和 **matcher()** 方法使用正则表达式提取字符串。如果正则表达式不正确,它还会生成 **PatternSyntaxException**。 语法 文件名:RemoveSubStringFromString.java 输出 ![]() 6) 使用 StringBuilder 的 delete() 方法StringBuilder 类提供了一个可变的字符序列,使我们能够高效地操作字符串。StringBuilder 的 delete() 方法使我们能够从序列中删除一系列字符。 为了向字符串添加和删除字符,**StringBuilder** 包含一个可修改的字符序列。 empty **StringBuilder** 函数 **Object() { [native code] }** 创建一个初始容量为 16 个字符的字符串构建器,如果内部缓冲区溢出,则会自动创建更大的字符串构建器。 delete() 方法接受两个参数:要删除的字符的起始索引(含)和结束索引(不含)。调用 delete() 后,指定范围内的字符将从 StringBuilder 中删除,其余字符将向左移动以填补空白。 **delete()** 函数的第一个和第二个 int 参数指定了要从字符串中删除的子字符串的开始和结束。 最后一个索引是不包含的,因为它从第二个参数中减去一,但开始索引是包含的。 当我们需要删除 StringBuilder 中存储的字符串的特定部分时,此方法很有用,例如修剪不需要的字符、删除子字符串或执行其他类型的字符删除操作。它提供了一种方便高效的方法来修改字符串数据,而无需创建新的字符串对象,这对于性能敏感的任务可能很有益。 语法 我们将使用一个正则表达式,该正则表达式提取字符串中的所有数字并替换所有匹配项的数字。 **\d:**此正则表达式识别 0 到 9 之间的任何数字。 文件名:RemoveSubStringExample.java 输出 ![]() 7) 使用 StringBuilder replace() 方法**replace()** 函数与 **delete()** 方法的唯一区别在于用于替换已从字符串中删除的字符的第三个参数。 StringBuilder 类提供可变字符串,允许高效地操作字符序列。replace() 方法使您能够将 StringBuilder 中的特定字符范围替换为另一个字符串。 replace() 方法接受三个参数:要替换的子字符串的起始索引(含)、要替换的子字符串的结束索引(不含)以及替换字符串。调用 replace() 后,指定范围内的字符将被替换字符串的字符替换。 如果需要替换一个大字符串,其大小将增加以适应字符串的长度。 当我们需要修改 StringBuilder 中存储的字符串的某些部分时,此方法很有用,例如替换子字符串、更新特定片段或执行其他类型的字符替换操作。它提供了一种灵活高效的方法来就地修改字符串数据,而无需创建新的字符串对象,这对于性能关键型应用程序可能是有益的。 语法 在此方法返回 StringBuilder 后,可以使用 **toString() { [native code] }()** 函数打印更新后的字符串。 文件名:RemoveSubStringFromString.java 输出 ![]() 结论在本节中,我们学习了如何替换和删除字符以从字符串中删除子字符串。所介绍的技术包括使用 StringBuilder 的 delete() 和 replace() 方法,以及字符串的 replace()、replaceFirst() 和 replaceAll() 函数。 下一主题Java 中打印字符串的程序 |
在 Java 中,有多种方法可以迭代 Map。请记住,我们不能直接使用迭代器遍历 map,因为 Map 接口不是 Collection 的一部分。Java 中的所有 map 都实现 Map 接口。Java 中有以下类型的 map:HashMap TreeMap LinkedHashMap Map...
阅读 3 分钟
在软件开发中,空值可能是错误和错误的常见来源,尤其是在像 Java 这样使用显式引用的语言中。当对象引用不指向对象实例,而是指向一个特殊值时,就会出现空值...
阅读 4 分钟
在面向对象编程中,封装是一个基本概念,它指的是隐藏对象的实现细节并提供访问其属性和行为的接口。访问器和修改器方法是与 Java 中的封装相关的两个重要概念。访问器访问器方法,也称为...
阅读 4 分钟
图中,所有其他顶点都可以到达的起始点称为母顶点。换句话说,如果顶点 v 是母顶点,则存在一条从 v 到网络中每个其他顶点的路径。寻找母...
阅读 6 分钟
java.lang.reflect.Field 类有一个 get() 方法,用于检索字段对象的值。当字段是原始类型时,对象会自动包装其值。如果字段是静态的,则会忽略 obj 参数;它可以为 null。在...
阅读 4 分钟
Java 是最流行和广泛使用的面向对象编程语言。它为开发人员提供了开发各种应用程序(如 Web、桌面应用程序、游戏等)的平台。使用 Java 编程语言的原因是它提供了安全性、可靠性,并且速度也很快。编写代码...
5 分钟阅读
我们可以使用 Java 程序从特定 URL 访问数据。Java 提供了 URL 和 URLConnection 类来通过网络与 URL 进行通信。这些类有许多有用的方法来处理 HTTP URL。在本节中,我们将讨论如何访问数据...
阅读 3 分钟
?在特定时刻存在于 JVM(Java 虚拟机)中的所有 Java 对象都包含在 Java 堆转储中。在堆内存中,JVM 为数组或类实例对象分配空间。垃圾回收器启动...
阅读 3 分钟
M×N 网格中每个块边界的着色作用可以根据用于确定包含该块的单元格周长着色的可能数量的特定模式来描述。这种类型的...
5 分钟阅读
给出了两个字符串 S1 和 S2。我们的任务是找到子字符串 str,使得 S2 是 str 的子序列。如果存在多个有效子字符串,则考虑最小长度的子字符串。如果有多个有效子字符串...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India