如何将字符串中的数字替换为对应数量的空格 适配任意输入字符串
实现思路
核心逻辑是逐字符判断输入内容,对数字字符做特殊替换:
- 非数字字符直接保留
- 数字字符转换为对应数值的整数,追加同等数量的空格
代码实现
Java 版本
适配Java 11及以上版本:
public class DigitToSpaceConverter { public static String convert(String input) { StringBuilder sb = new StringBuilder(); for (char c : input.toCharArray()) { if (Character.isDigit(c)) { int spaceCount = c - '0'; sb.append(" ".repeat(spaceCount)); } else { sb.append(c); } } return sb.toString(); } public static void main(String[] args) { // 测试用例1 System.out.println(convert("AA5DD2EE3MM")); // 输出:AA DD EE MM // 测试用例2 System.out.println(convert("a3ee")); // 输出:a ee } }
如果使用Java 10及更低版本,替换" ".repeat(spaceCount)为手动生成空格的逻辑即可:
// 替换repeat逻辑的示例 for (int i = 0; i < spaceCount; i++) { sb.append(' '); }
Python 版本
基础单数字替换版本:
def digit_to_space(input_str: str) -> str: res = [] for c in input_str: res.append(' ' * int(c) if c.isdigit() else c) return ''.join(res) # 测试 print(digit_to_space("AA5DD2EE3MM")) print(digit_to_space("a3ee"))
支持连续多位数替换的正则版本(比如"a12b"会转为"a b"):
import re def digit_to_space(input_str: str) -> str: return re.sub(r'\d+', lambda match: ' ' * int(match.group()), input_str)
内容的提问来源于stack exchange,提问作者dodododo97
相关产品推荐
相关产品推荐

