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
相关产品推荐
相关产品推荐

