如何在string中添加char,将"cdfrcs"转为每个字符前加星号的格式?
字符串字符前批量插星号实现方案
需求本质
现有原始字符串"cdfrcs",需要生成目标格式*c*d*f*r*c*s,核心规则为:原字符串的每一个字符前缀都添加星号*,无额外首尾字符截断要求。
通用实现逻辑
不需要逐位置硬编码替换,通用思路分为两类,代码量和性能都更优:
- 利用字符串拆分拼接逻辑:把原字符串拆分为单字符序列,用
*作为连接符拼接所有单字符,最后在整个拼接结果的最前面补一个*,即可得到目标格式。这种方式完全不需要手动循环遍历判断位置,依托语言内置的字符串处理方法实现,性能最优。 - 逐字符遍历拼接:遍历原字符串的每一个字符,依次把
*和当前字符拼接到结果变量上,最终得到的字符串也符合要求,适合需要在拼接逻辑里加额外判断的场景。
不同技术栈的具体实现示例
- Python 实现:
直接调用内置字符串方法,无手动循环开销:origin_str = "cdfrcs" target_str = "*" + "*".join(origin_str) # 输出结果为 *c*d*f*r*c*s - JavaScript 实现:
借助split拆分、join拼接的能力:const originStr = "cdfrcs"; const targetStr = "*" + originStr.split("").join("*"); // 输出结果为 *c*d*f*r*c*s - Java 实现:
借助JDK内置的String.join工具类实现:String originStr = "cdfrcs"; String targetStr = "*" + String.join("*", originStr.split("")); // 输出结果为 *c*d*f*r*c*s
常见避坑提示
- 不要在字符串不可变的语言(如Java 8及更早版本)中,通过普通字符串变量+逐次拼接的方式生成结果,这类写法会在内存中生成大量临时字符串对象,长字符串场景下性能损耗明显,优先用语言提供的字符串拼接工具类实现。
- 如果用正则替换的方式实现,注意替换规则要匹配每一个字符的前缀位置,不要漏掉开头第一个字符前的星号,否则结果会和预期存在偏差。
内容的提问来源于stack exchange,提问作者YoungCoder
相关产品推荐
相关产品推荐

