首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
字符串空格替换为 “%20” 的两种实现方法

字符串空格替换为 “%20” 的两种实现方法

热心网友
24
转载
2026-05-05

目录

字符串空格替换为 “%20” 的两种实现方法

一、题目要求

二、使用 StringBuilder 的方法

三、使用字符数组的方法

四、总结


在 Ja va 开发中,处理字符串是家常便饭。一个常见的需求就是将字符串里的空格替换成特定字符,比如在构造 URL 时,把空格编码成 “%20”。今天,我们就来深入聊聊实现这个功能的两种主流方法,看看它们各自的门道和适用场景。

一、题目要求

问题很明确:给你一个由大小写英文字母组成的字符串,已知其真实长度(包括后面预留的可使用空间),任务是把字符串中所有的空格都替换成 “%20”。

二、使用 StringBuilder 的方法

思路分析

但凡对 Ja va 字符串特性有所了解的朋友都知道,String 对象是不可变的。这意味着每次看似“修改”字符串,实际上都在创建新对象,这在频繁操作的场景下效率堪忧。那怎么办呢?这时候,可变字符序列 StringBuilder 就该登场了。它的设计初衷就是为了高效地进行字符串拼接、删除和替换。我们的思路也就很直接了:遍历原字符串,遇到空格,就用 “%20” 替换掉它,最后把 StringBuilder 转回 String 即可。

Ja va 代码实现

public class ReplaceSpace { public static String replaceSpace(StringBuilder str) { for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') { str.replace(i, i + 1, "%20"); } } return str.toString(); } public static void main(String[] args) { StringBuilder str = new StringBuilder("mr john smith"); System.out.println(replaceSpace(str)); } }

三、使用字符数组的方法

思路分析

如果说 StringBuilder 是“优雅派”,那字符数组方法就是“实力派”,追求极致的性能控制。它的核心思想是“先算后做”。首先,统计出原字符串里有多少个空格。要知道,一个空格替换成 “%20” 会多出两个字符,所以替换后的新长度就是原长度加上空格数的两倍。接下来,准备两个指针,一个(快指针)从原字符串末尾向前扫描,另一个(慢指针)在新字符数组的末尾准备填充。当快指针碰到非空格字符,就直接复制到慢指针位置;如果碰到空格,就从后往前依次填入 ‘0’、‘2’、‘%’。这种方法巧妙地避免了大量数据的整体移动。

Ja va 代码实现

public class ReplaceSpaceWithCharArray { public static String replaceSpace(char[] str, int length) { int spaceCount = 0; for (int i = 0; i < length; i++) { if (str[i] == ' ') { spaceCount++; } } int newLength = length + spaceCount * 2; char[] newStr = new char[newLength]; int p1 = length - 1; int p2 = newLength - 1; while (p1 >= 0) { if (str[p1] == ' ') { newStr[p2--] = '0'; newStr[p2--] = '2'; newStr[p2--] = '%'; } else { newStr[p2--] = str[p1]; } p1--; } return new String(newStr); } public static void main(String[] args) { char[] str = {'m', 'r',' ', 'j', 'o', 'h', 'n',' ', 's','m', 'i', 't', 'h', '\0', '\0', '\0', '\0', '\0', '\0', '\0'}; System.out.println(replaceSpace(str, 13)); } }

四、总结

两种方法的比较

简单来说,StringBuilder 胜在简洁直观。代码一目了然,非常适合在一般业务场景下进行简单的字符串替换。当然,有人可能会担心,如果字符串极长且操作极频繁,频繁的替换操作是否会影响性能?实际上,现代 Ja va 编译器和 JVM 的优化能力已经非常强大,对于大多数应用,这种开销完全在可接受范围内。

反过来看,字符数组方法则胜在精细可控。它直接在数组上操作,避免了创建中间对象,在处理海量数据或对性能有严苛要求的场景下(例如底层算法实现、高频交易系统),优势就体现出来了。不过,代价就是代码复杂度上升,需要开发者手动管理指针和数组边界,一个不留神就容易出现越界错误。

注意事项

选择字符数组方法时,务必对指针移动和边界条件保持高度警惕。同时,深刻理解 Ja va 字符串不可变这一特性,是写出高效、高质量字符串处理代码的基础。根据实际需求,在开发效率与运行效率之间做出明智权衡,这才是关键所在。

希望通过以上的剖析,你能真正掌握这两种替换空格的“武器”,并在未来的开发工作中,根据具体情况,灵活选用最趁手的那一个。

来源:https://blog.csdn.net/m0_57836225/article/details/144810200
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

OpenClaw人人养虾接入Matrix平台操作指南
AI资讯
OpenClaw人人养虾接入Matrix平台操作指南

Matrix 是一种开放且去中心化的即时通讯协议,允许用户自主部署私有服务器并接入全球 Matrix 联邦网络。OpenClaw 网关通过集成 Matrix 的 Client-Server API,实现与这一分布式通信生态的无缝对接。 前置准备 在配置 OpenClaw 连接 Matrix 之前,请

热心网友
05.20
JavaScript同步与异步编程的区别及应用场景解析
编程语言
JavaScript同步与异步编程的区别及应用场景解析

Ja vaScript 中的同步与异步编程:核心概念与实战解析 在 Ja vaScript 的世界里,同步编程和异步编程是两种根本性的任务处理模式。它们决定了代码执行的节奏,也直接影响了应用的性能和用户体验。今天,我们就来彻底搞懂这两种模式的区别、适用场景以及背后的实现机制。 1 同步编程:一步一

热心网友
05.07
PHP隐藏版本信息与安全配置方法详解
编程语言
PHP隐藏版本信息与安全配置方法详解

PHP:隐藏 PHP 在安全领域,有一个公认的共识:单纯依靠隐藏来实现安全,往往是最脆弱的策略之一。然而,现实情况是,在构建纵深防御体系时,任何一点额外的、哪怕是微小的安全增益,都可能带来意想不到的价值。 具体到PHP应用,确实存在一些简单直接的方法,能够有效地“隐藏”PHP本身,从而在一定程度上增

热心网友
05.07
php代码审计片段 02 绕过过滤的空白字符
编程语言
php代码审计片段 02 绕过过滤的空白字符

源码点这:bowu678 php_bugs: PHP代码审计分段讲解 (github com) 要彻底吃透这道题,你得先备好这几样“家伙事儿”:扎实的PHP基础知识、对特定函数行为的深刻理解,以及对URL编码和ASCII码的灵活运用。当然,如果你还能用Python写个简单的脚本(比如会用Reques

热心网友
05.06
字符串空格替换为 “%20” 的两种实现方法
编程语言
字符串空格替换为 “%20” 的两种实现方法

目录 字符串空格替换为 “%20” 的两种实现方法 一、题目要求 二、使用 StringBuilder 的方法 三、使用字符数组的方法 四、总结 在 Ja va 开发中,处理字符串是家常便饭。一个常见的需求就是将字符串里的空格替换成特定字符,比如在构造 URL 时,把空格编码成 “%20”。今天,我

热心网友
05.05

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

2026青岛信息技术产业对接大会5月29日开幕院士领衔
AI资讯
2026青岛信息技术产业对接大会5月29日开幕院士领衔

2026年5月29日,青岛将举办新一代信息技术及人工智能产业对接大会,主题为“向新·向智·向未来”。大会汇聚院士及产业领军者,聚焦技术与商业化融合,通过发布场景需求、推动签约合作,以“场景换技术、资本引项目”模式,助力青岛人工智能产业突破千亿规模,驱动城市智能化升级。

热心网友
05.27
AI数据平台实战指南 提升工作效率与数据分析能力
AI教程
AI数据平台实战指南 提升工作效率与数据分析能力

高效运用AI数据平台需遵循清晰路径。首先创建符合格式要求的数据集作为基础。随后进行数据清洗,处理重复、错误与缺失值以保证分析准确性。接着选择合适模型进行数据分析以挖掘规律。最后将结果通过图表可视化,实现直观呈现与有效沟通。

热心网友
05.27
大唐2一折服官网首页入口地址与登录方法
游戏资讯
大唐2一折服官网首页入口地址与登录方法

正在寻找《大唐2》一折服的官方网站入口?许多新玩家初次接触时确实会遇到这个困惑。无需担心,本指南将为您提供最清晰的路径,直接呈现官方入口与游戏核心信息,助您快速启程。 大唐2一折服正式首页入口 最权威、最稳定的官方访问地址如下,建议您妥善收藏,方便随时访问: 正式入口:https: dt yhyx

热心网友
05.27
AI分析报告撰写指南:高效工具使用技巧与范文模板
AI教程
AI分析报告撰写指南:高效工具使用技巧与范文模板

核心应用场景: 在当今信息爆炸的时代,数据规模持续增长,分析需求日益精细化。无论是企业决策者还是项目团队,都面临一个核心痛点:如何在确保报告专业深度与质量的同时,显著缩短撰写时间、提升产出效率?AI智能写作工具的出现,为这一难题提供了系统性解决方案。熟练掌握其应用方法,您便能高效、稳定地产出具备专业

热心网友
05.27
一分钟管理法高效团队管理实战指南
AI资讯
一分钟管理法高效团队管理实战指南

带团队,是每个管理者必须跨过去的坎。一个人执行力再强,终究独木难支;不懂如何凝聚众人之力,结果往往是管理者自己累到崩溃,团队却一盘散沙。说到底,管理的核心不是“管”,而是“理”——理顺目标,理顺人心,理顺协作的节奏。今天,我们就来聊聊一种化繁为简的管理方法:“3个一分钟”。它就像一套管理上的“组合拳

热心网友
05.27