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

Java:如何从含数字的字符串中分离起始字母部分

提取字符串中数字前的起始字母

方法一:正则表达式匹配

用正则表达式直接匹配字符串开头连续的非数字字符,是最简洁的实现方式。

代码示例(Java):

public class ExtractPrefix {
    public static void main(String[] args) {
        String value1 = "test123123hj";
        String value2 = "demo312342343dfs";
        
        // 匹配开头连续非数字字符,替换为捕获组内容
        String prefix1 = value1.replaceAll("^([^0-9]+).*", "$1");
        String prefix2 = value2.replaceAll("^([^0-9]+).*", "$1");
        
        System.out.println("value1 = \"" + prefix1 + "\"");
        System.out.println("value2 = \"" + prefix2 + "\"");
    }
}

正则说明:

  • ^([^0-9]+).*:
    • ^:匹配字符串的起始位置
    • ([^0-9]+):捕获组,匹配一个或多个非数字字符
    • .*:匹配后续任意长度的任意字符
  • $1:引用第一个捕获组的内容,即开头的非数字前缀

运行结果:

value1 = "test"
value2 = "demo"

方法二:遍历字符截取

如果不想依赖正则,也可以通过逐个遍历字符的方式,遇到数字就停止,截取前面的内容。

代码示例(Java):

public class ExtractPrefix {
    public static void main(String[] args) {
        String value1 = "test123123hj";
        String value2 = "demo312342343dfs";
        
        String prefix1 = getPrefixBeforeNumber(value1);
        String prefix2 = getPrefixBeforeNumber(value2);
        
        System.out.println("value1 = \"" + prefix1 + "\"");
        System.out.println("value2 = \"" + prefix2 + "\"");
    }
    
    private static String getPrefixBeforeNumber(String str) {
        StringBuilder sb = new StringBuilder();
        for (char c : str.toCharArray()) {
            if (Character.isDigit(c)) {
                break;
            }
            sb.append(c);
        }
        return sb.toString();
    }
}

逻辑说明:

  • 遍历字符串的每个字符,判断是否为数字
  • 一旦遇到数字就终止遍历,返回之前拼接的字符序列
  • 若字符串开头无数字,会返回整个字符串(符合需求逻辑)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:40:24