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

如何解析含Unicode数字的字符串?求Java替代Integer.parseInt的API

处理Unicode数字的Java标准库方案

当然有现成的Java标准库API可以解决这个问题,完全不用手动维护字符映射表。下面给你两个最实用的方案:

方案1:使用Character.getNumericValue()

这个方法是处理Unicode数字的利器,它支持几乎所有Unicode标准定义的数字字符(包括全角数字、阿拉伯-印度数字、罗马数字、圈形数字等),能直接返回字符对应的int数值。

针对你的场景,可以这样修改代码:

private static final Pattern NUMBER = Pattern.compile("(?<!\\d)([0123]?\\d) september", Pattern.UNICODE_CHARACTER_CLASS);
public static void main(String[] args) {
    String stringWithNumber = " ퟮퟮ september";
    Matcher matcher = NUMBER.matcher(stringWithNumber);
    if (matcher.find()) {
        String numberStr = matcher.group(1);
        // 遍历字符计算数值
        int numericValue = 0;
        for (char c : numberStr.toCharArray()) {
            numericValue = numericValue * 10 + Character.getNumericValue(c);
        }
        System.out.println("It's number: " + numericValue);
    }
}

如果你喜欢更简洁的Java 8+ Stream写法,也可以这样实现:

int numericValue = numberStr.chars()
    .map(Character::getNumericValue)
    .reduce(0, (accumulator, digit) -> accumulator * 10 + digit);

方案2:使用java.text.NumberFormat

如果你需要解析更复杂的数字格式(比如带千分位、小数的Unicode数字字符串),NumberFormat会更合适。它的parse()方法可以直接解析包含Unicode数字的字符串,返回Number对象,你可以再转成int或其他数值类型。

示例代码:

import java.text.NumberFormat;
import java.text.ParseException;

private static final Pattern NUMBER = Pattern.compile("(?<!\\d)([0123]?\\d) september", Pattern.UNICODE_CHARACTER_CLASS);
public static void main(String[] args) {
    String stringWithNumber = " ퟮퟮ september";
    Matcher matcher = NUMBER.matcher(stringWithNumber);
    if (matcher.find()) {
        String numberStr = matcher.group(1);
        try {
            Number number = NumberFormat.getInstance().parse(numberStr);
            System.out.println("It's number: " + number.intValue());
        } catch (ParseException e) {
            // 处理解析异常
            e.printStackTrace();
        }
    }
}

注意:如果是特定语言/地区的数字变体(比如阿拉伯文的印度数字),可以指定对应的Locale(比如NumberFormat.getInstance(new Locale("ar", "SA")))来确保解析准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:59:46