You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何提取特定格式子串并转换为数字字符串

Java实现:提取数字英文表述并转换为数字字符串

步骤1:提取数字英文子串

已知前缀your identification code is (注意末尾的空格)固定不变,直接通过前缀长度截取后续内容即可,也可以用分割方式获取目标部分:

String input = "your identification code is four zero two four three six";
String prefix = "your identification code is ";
// 截取前缀之后的部分,trim处理可能的多余空格
String numEnglishPart = input.substring(prefix.length()).trim();

或者使用split方法:

String[] parts = input.split(prefix);
String numEnglishPart = parts[1].trim();

步骤2:建立英文数字与阿拉伯数字的映射

创建一个Map存储0-9的英文与阿拉伯数字对应关系,用于快速查找转换:

Map<String, String> numMap = new HashMap<>();
numMap.put("zero", "0");
numMap.put("one", "1");
numMap.put("two", "2");
numMap.put("three", "3");
numMap.put("four", "4");
numMap.put("five", "5");
numMap.put("six", "6");
numMap.put("seven", "7");
numMap.put("eight", "8");
numMap.put("nine", "9");

步骤3:转换并拼接成目标字符串

将提取到的英文数字按空格分割为单词数组,遍历每个单词从映射表中取出对应数字,拼接成最终结果:

String[] numWords = numEnglishPart.split("\\s+"); // \\s+匹配任意数量空白字符,兼容多余空格
StringBuilder result = new StringBuilder();
for (String word : numWords) {
    // 可选:处理未知单词的异常情况
    if (!numMap.containsKey(word)) {
        throw new IllegalArgumentException("无法识别的数字英文:" + word);
    }
    result.append(numMap.get(word));
}
String finalCode = result.toString(); // 结果为"402436"

完整示例代码

整合所有步骤的可运行代码:

import java.util.HashMap;
import java.util.Map;

public class CodeConverter {
    public static void main(String[] args) {
        String input = "your identification code is four zero two four three six";
        String prefix = "your identification code is ";
        
        // 提取数字英文部分
        String numEnglishPart = input.substring(prefix.length()).trim();
        
        // 初始化数字映射表
        Map<String, String> numMap = new HashMap<>();
        numMap.put("zero", "0");
        numMap.put("one", "1");
        numMap.put("two", "2");
        numMap.put("three", "3");
        numMap.put("four", "4");
        numMap.put("five", "5");
        numMap.put("six", "6");
        numMap.put("seven", "7");
        numMap.put("eight", "8");
        numMap.put("nine", "9");
        
        // 转换拼接为目标字符串
        String[] numWords = numEnglishPart.split("\\s+");
        StringBuilder result = new StringBuilder();
        for (String word : numWords) {
            if (!numMap.containsKey(word)) {
                throw new IllegalArgumentException("无法识别的数字英文:" + word);
            }
            result.append(numMap.get(word));
        }
        
        System.out.println(result.toString()); // 输出:402436
    }
}

补充说明

  • 使用split("\\s+")替代split(" "),可以兼容输入字符串中存在多个连续空格的情况
  • 加入了未知单词的异常处理,避免出现null值拼接导致的错误
  • 注意前缀字符串末尾的空格,确保截取的数字英文部分准确

内容的提问来源于stack exchange,提问作者Niladri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:10:55